概述
今天刷题,遇到了拷贝构造优化的题,没有做对。对此,当然不能放任不管啦,经过这么多实践,终于搞懂优化了。
友情提示:推荐对拷贝构造优化有一定了解的人,因为此篇博客不做讲解,测试平台VS 2015,Debug模式x64。
只有一句话给各位看观,希望能帮助各位更好了解。
归根结底,调用拷贝构造函数的情况一定是这个对象不存在;如果对象存在,则调用的就是赋值运算符的重载了。
class A
{
public:
A()
{
cout << "构造"<<endl;
}
A(const A&a)
{
cout << "拷贝构造"<<endl;
}
A &operator=(const A &x)
{
cout << "赋值运算符重载"<<endl;
return *this;
}
};
//A a发生一次拷贝构造
//return a发生一次拷贝构造
//具体情况,根据优化而定
A Test(A a)
{
return a;
}
int main()
{
A a1, a2;//"构造 构造"
A a3 = a1;//"拷贝构造"
A a4 = A();//"构造 "
cout << "A a5 = Test(a1):
"<<endl;
A a5 = Test(a1);//两次拷贝构造
cout << "A a6 = Test(Test(Test(a1))):
" << endl;
A a6 = Test(Test(a1));//三次拷贝构造
cout << "A a7 = Test(A()):
" << endl;
A a7 = Test(A());//一次构造,一次拷贝构造
cout << "a2 = Test(a1):
" << endl;;
a2 = Test(a1);//拷贝构造,拷贝构造,赋值运算符重载
cout << "a2 = Test(A()):
"<<endl;
a2 = Test(A());//构造,拷贝构造,赋值运算符重载
}
最后
以上就是机灵皮卡丘为你收集整理的N种拷贝构造优化,多种测试代码的全部内容,希望文章能够帮你解决N种拷贝构造优化,多种测试代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复