返回值优化——《C++ Primer Plus》

通过传值方式返回创建的新对象时,使用一种特殊的语法.

例如在operator+中:return Integer(left.i + right.i);

这种形式看起来像是一个构造函数的调用,这称为临时对象语法,含义是创建一个临时的Integer对象并返回它。

这种方式和创建一个有名字的对象并返回它是否相同呢?

例如:Integer temp(left.i + right.i); return temp;
这两条语句先创建temp对象,会调用构造函数。然后拷贝构造函数把temp拷贝到外部返回值的存储单元,最后在temp作用域的结尾时调用析构函数。

返回临时对象的方式不同与此:

当编译器看到这种语法时,会明白创建这个对象的目的只是返回它,所以编译器直接把这个对象创建在外部返回值的存储单元中,所以只需要调用一次构造函数,不需要拷贝构造函数和析构函数的调用。因此,使用临时对象语法的效率非常高,这被称为返回值优化

发布了145 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43207025/article/details/103333727