以下函数ReturnObjectDirect与ReturnObject分别调用了多少次构造函数?
#include
using namespace std;
class Base
{
public:
Base( )
{
cout<<\"缺省构造函数\"< }
Base(const Base & other)
{
cout<<\"复制构造函数\"< }
~Base()
{
cout<<\"析造函数\"< }
};
Base ReturnObjectDirect( )
{
return Base();
}
Base ReturnObject()
{
Base ret;
return ret;
}
int main()
{
Base obj1 =ReturnObjectDirect();
Base obj2 =ReturnObject();
return 0;
}
ReturnObjectDirect函数由于编译器优化所以只调用了一次缺省构造函数!
而ReturnObject函数
Base ret; //这里调用了一次缺省构造函数
return ret; //调用拷贝构造函数将ret赋给临时变量
所以总共调用了二次构造函数!
阅读(373) | 评论(0) | 转发(0) |