读书人

小疑点大思考之C++临时对象

发布时间: 2013-10-21 17:03:30 作者: rapoo

小问题大思考之C++临时对象

C++中有这样一种对象:它在代码中看不到,但是确实存在。它就是临时对象---由编译器定义的一个没有命名的非堆对象(non-heap object)。为什么研究临时对象?主要是为了提高程序的性能以及效率,因为临时对象的构造与析构对系统性能而言绝不是微小的影响,所以我们应该去了解它们,知道它们如何造成,从而尽可能去避免它们。

临时对象通常产生于以下4种情况:

    类型装换按值传递按值返回对象定义

下面我们逐一看看:

1、类型转换:它通常是为了让函数调用成功而产生临时对象。发生于 “传递某对象给一个函数,而其类型与它即将绑定上去的参数类型不同” 的时候。

例如:

Integer i1(100); // 编译器肯定不会生成临时对象Integer i2 = Integer(100); // 编译器可能生成临时对象Integer i3 = 100; // 编译器可能生成临时对象

然而,实际上大多数的编译器都会通过优化省去临时对象,所以这里的初始化形式基本上在效率上都是相同的。








读书人网 >C++

热点推荐