Debug模式下面,居然给我跑出一个constructor两个deconstructor?
这个和NRV没有关系,Debug模式下面是不做任何优化的啊!
class CNRV
{
public:
CNRV() {cout << "constructor" << endl;}
virtual ~CNRV() {cout << "deconstructor" << endl;}
};
CNRV GetNRV()
{
CNRV a;
return a;
}
int main(array<System::String ^> ^args)
{
CNRV t = GetNRV();
return 0;
}
constructor
deconstructor
deconstructor
请按任意键继续. . .
啊?!你的拷贝构造函数呢?的确,加上后一切正常了。
CNRV(const CNRV& rhs) {cout << "copy constructor" << endl;}
constructor
copy constructor
deconstructor
deconstructor
请按任意键继续. . .