返回值优化

来源:互联网 发布:php乘法表打印txt文档 编辑:程序博客网 时间:2024/05/16 07:46

通过传值方式返回要创建新对象时,应注意使用的形式。例如在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]

原创粉丝点击