返回值优化

通过传值方式返回要创建新对象时,应注意使用的形式。例如在operator+ :

return Integer( left.i + right.i );             (1)

Integer tmp( left.i + right.i );                 (2) return tmp;

对于(2),将发生三件事。首先,创建tmp对象,包括构造函数的调用。然后拷贝构造函数把tmp拷贝到外部返回值的存储单元里。最后,当tmp在作用于的结尾时调用析构函数

对于(1),返回临时对象的方式,是不一样的。编译器直接把这个对象创建在外部返回值的内存单元。因为不是真正创建一个局部对象,所以仅需要一个普通构造函数调用(不需要拷贝构造函数),且不会调用析构函数。这种方法不需要什么花费,因此效率很高。这种方式常被称为返回值优化。

[C++编程思想(1)P279]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值