拷贝构造函数

考虑一下代码:

 

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)返回的时候,又调用了一次拷贝构造函数

 

你可能感兴趣的