拷贝构造函数
考虑一下代码:
class Test
{
public:
Test(void);
Test(const Test& t);
~Test(void);
public:
int i;
};
Test::Test()
{
i=1;
}
Test::Test(const Test &t)
{
this->i=(t.i+1);
}
Test::~Test()
{
}
Test Func(Test t)
{
int i=t.i+1;
return t;
}
int _tmain(int argc, _TCHAR* argv[])
{
Test t;
int i=t.i;
Func(t);
return 0;
}
注意红色标注的函数调用,调用了几次拷贝构造函数?
两次:1次是做为实参传递t的时候,调用了一次拷贝构造函数(effective C++学到的);
另1次是,Func(t)返回的时候,又调用了一次拷贝构造函数