产生一个对象,如果这个对象很大并且这个对象是在一个循环里面产生的,是特别耗资源的,因为编译器要找到一块合适的内存,如果没有合适的还要整理磁盘碎片并合并为一块合适的对象存储区。因此,在编程中一定要小心的产生临时对象。
当然,编译器产生临时变量往往对我们是很方便的,这和临时对象是不一样的。
首先看下面这个例子:
#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;}