记录,待总结4

1.delete运算符只能删除堆中的空间,删除栈中的空间会导致出错
例1:
2.关于强制类型转换
例2:

输出:
construct     0012FF38     //a的构造
construct     0012FF34     //b的构造
99
construct     0012FF30     //临时对象的构造
=     0012FF38             //赋值
delete     0012FF30        //临时对象的析构
1000
construct     0012FF2C     //临时对象的构造
=     0012FF38             //赋值
delete     0012FF2C        //临时对象的析构
2
=     0012FF38             //赋值
35
delete     0012FF34        //
delete     0012FF38        //
解释:不管是显示类型转换还是隐式类型转换,都有以下一些共同点:
1)先构造一个临时对象,把临时对象赋值给目标,然后析构临时对象
2)由于要构造一个临时对象,必须要有只带一个参数的构造函数
3)由于要用到赋值函数,当类中有指针成员时,要定义自己的复制控制函数

3.前置自加与后置自加
例3:

解释:
1)前置自加按引用返回。
后置自加按值返回,且返回的是临时对象。
2)后置自加中的参数没有实际意义,只是为了区分前置
3)很显然前置自加效率更高,尽量用前置

4.这是对例3的一个应该举例
例4:

输出:

construct     0012FF38
1
copy     0012FF34
2
2
copy     0012FEB8
copy     0012FF30
delete     0012FEB8
delete     0012FF30
2
3
delete     0012FF34
delete     0012FF38
解释:如果看懂了例3和前一篇文章,这个结果是很好理解的

原文地址:https://www.cnblogs.com/windmissing/p/2559876.html