请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

临时对象的优化

Complex Complex::operator+ (const Complex& c) const
{
//Complex tmp;
//tmp._real = _real + c._real;
//tmp._image = _image + c._image;
//return tmp;
return Complex(_real + c._real, _image + c._image);
}
这段代码中,为什么return tmp时会调用拷贝构造函数,而 return Complex(_real + c._real, _image + c._image)不会呢?

正在回答 回答被采纳积分+3

1回答

quickzhao 2020-04-19 00:14:37

前者已经产生一个临时对象了,返回值必须得使用拷贝构造才能得到一个可用的对象,后者编译器可以在构造对象时直接返回,优化成本。

0 回复 有任何疑惑可以回复我~
  • 但是依然在Complex Complex::operator+ (const Complex& c) const代码块里啊,为什么没有释放?
    回复 有任何疑惑可以回复我~ 2020-05-05 10:22:19
  • 因为编译器很聪明,知道优化。
    回复 有任何疑惑可以回复我~ 2020-05-05 10:33:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信