临时对象的优化

来源:8-5 拷贝构造及临时对象的优化

慕沐0178679

2020-04-19

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)不会呢?

写回答

1回答

quickzhao

2020-04-19

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

0
2
quickzhao
回复
慕粉2204379686
因为编译器很聪明,知道优化。
2020-05-05
共2条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程