读书人

c++中临时对象的有关问题

发布时间: 2012-04-24 14:15:38 作者: rapoo

c++中临时对象的问题

C/C++ code
class B{  ....};B play (){   B b;   return b;}B play2(B b){   return b;}void main(){   情况一、B t1 = play();   // 会析构2次,因为一次是return b;返回的临时对象,还有一次是t1对象析构      情况二、B t2 = play2(5);   // 编译器会析构2次,   //  我觉得会是3次,5传入的一次临时对象,return b;返回的临时对象,还一次是t2对象析构}


整体还是对临时对象不怎么理解。。。

[解决办法]
再算上编译器可能进行的优化(例如多次构造临时变量且其中没有操作,则优化构造复制次数,或转化为复制构造函数等),就更复杂了

简单地说,别写这种过程不明确的代码
用指针或者引用来避免复制,绝对避免可能被优化的多次复制——除非复制的是直接按值传递的基本数据类型

读书人网 >C++

热点推荐