首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-24 
c++中临时对象的问题C/C++ codeclass B{....}B play (){B breturn b}B play2(B b){return b}void main

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对象析构}


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

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

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

热点排行