C++拷贝构造函数的调用时机有4种:
class Test{
private:
int a;
int b;
public:
Test(int _a, int _b)
{
a = _a;
b = _b;
}
Test(const Test& t)
{
cout << "拷贝构造函数" << endl;
a = t.a;
b = t.b;
}
~Test()
{
cout << "析构函数" << endl;
}
};
1 调用时机1
Test t(1, 2);
Test t2 = t;
2 调用时机2
Test t(1, 2);
Test t3(t2);
3 调用时机3
Test t(1, 2);
void printT(Test t)
{
}
printT(t);
4 调用时机4
Test getObj()
{
Test t(1, 2);
return t;
}
/*匿名对象处理1 该处匿名对象不会被析构*/
void playObj()
{
Test t = getObj();
}
/*匿名对象处理2 该处匿名对象会被析构*/
void playObj()
{
Test t(1, 2);
t = getObj();
}