2 qq11111qqwowo qq11111qqwowo 于 2014.08.31 23:52 提问

关于C++中对象作为返回值时候的调用复制构造函数

#include
using namespace std;

class A
{
public:
int v;
A(int n){v = n;}
A(const A &a)
{
v = a.v;
cout << "Copy constructor called" << endl;
}
};

A Func()
{
/*
A *b = new A(43);
return *b;
*/
A b(54);
return b;
}
int main()
{
cout << Func().v << endl;
return 0;
}

注释了的那部分可以成功调用,但是直接定义的一个对象不能调用复制构造函数。这是为什么呢?

2个回答

gdq1209
gdq1209   2014.09.06 16:29

局部变量出作用域就析构

seanxq
seanxq   2014.09.24 17:35

使用的是何种编译器,什么版本?

Linux gcc, 上述的代码没有问题。

Csdn user default icon
上传中...
上传图片
插入图片