例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和前一篇文章,这个结果是很好理解的