考虑一下代码:
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)返回的时候,又调用了一次拷贝构造函数
原文链接: https://www.cnblogs.com/peijihui/archive/2010/12/30/1922347.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/19449
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!