c++对“匿名对象”的两种处理方法

1.对于语句:class A; A="匿名对象";待对象A把"匿名对象"的数据复制过来后,“匿名对象被释放”

 

c++对“匿名对象”的两种处理方法

 

运行结果:
c++对“匿名对象”的两种处理方法

从执行结果可以看出,fun()函数内的p和main()函数中的p1地址不同,且有两次构造和两次析构,证实了上面的说法。

 

2.对于语句:class A="匿名对象";匿名对象被直接“扶正”,不被释放

c++对“匿名对象”的两种处理方法

运行结果:

c++对“匿名对象”的两种处理方法

由上面执行结果可知,fun()函数内的对象p的内存空间并未释放,而是与man()函数内的p1关联,这是编译器做了优化。