避免产生临时(隐式)对象
来源:互联网 发布:python就业班解压密码 编辑:程序博客网 时间:2024/04/29 02:23
产生一个对象,如果这个对象很大并且这个对象是在一个循环里面产生的,是特别耗资源的,因为编译器要找到一块合适的内存,如果没有合适的还要整理磁盘碎片并合并为一块合适的对象存储区。因此,在编程中一定要小心的产生临时对象。
临时对象在C++语言中的特征是未出现在源代码中,从堆栈中产生的未命名对象。这里需要特别注意的是,临时对象并不出现在源代码中。即开发人员并没有声明要使用它们,没有为其声明变量。它们由编译器根据情况产生,而且开发人员往往都不会意识到它们的产生。
当然,编译器产生临时变量往往对我们是很方便的,这和临时对象是不一样的。
首先看下面这个例子:
- #include <stdio.h>
- class A
- {
- public:
- A()
- {
- printf("A created./n");
- }
- A(A& a)
- {
- printf("A created with copy/n");
- }
- ~A()
- {
- printf("A destroyed./n");
- }
- };
- A foo(A a)//产生第二个对象
- {
- A b;//产生第三个对象
- return b;
- }
- int main()
- {
- A a;//产生第一个对象
- a=foo(a);//产生第四个对象
- return 0;
- }
输出结果如图:
以上代码,表面上我们只在22行和28行产生了2个对象,但是实际上产生了4个对象,在代码中有标示。我们完全可以将20行改为 A& foo(A &a), 参数和返回值都传引用,可以避免产生临时对象。
- 避免产生临时(隐式)对象
- 临时对象如何产生
- 编译器产生的临时对象
- 避免临时对象的字符串加法
- c++临时对象及其产生条件
- 关于c++临时对象产生的规则
- C++产生的临时对象引用
- C++中临时对象的产生
- 临时对象的产生与运用
- MFC临时对象的所产生的BUG
- 浅析C++临时对象的产生相关问题
- 浅析C++临时对象的产生相关问题
- C++中临时对象的产生与优化
- C++中临时对象的产生与运用
- 浅析C++临时对象的产生相关问题
- 临时对象
- 临时对象
- 临时对象
- Linux的root用户密码丢失怎么办?
- ERP系统的未来和SOA有约
- 什么是CODEC?
- 别人的C++面试
- [C#] 动态生成GridView的列
- 避免产生临时(隐式)对象
- 华三07年笔试题
- 华为笔试题
- P2P直播与点播技术简介
- TagSupport与BodyTagSupport 标签返回值的比较:
- 怎么在数据窗口中用左箭头实现shift+tab
- bash编程
- TCP/IP学习笔记之九 --- 广播和多播
- Java学习之路