1.在某些特殊的情况下,赋值运算符必须先释放一些旧值,然后才能根据新值的类型分配新的数据。此时,自复制会出错
2.operator关键字配合要转换的类型,构成了转换运算符的重载函数。该函数没有返回值,但可以在函数中返回一个转换后的值
例1:待举例。
3.两个很重要的例子
例2:
输出:
construct 0012FF38 //a的构造
copy 0012FF34 //b的构造(返回值的构造)
delete 0012FF34 //b的析构(返回值的析构)
delete 0012FF38 //a的析构
解释:
L13中,b是返回值的别名,返回值是*this的复制,*this就是a
因此:b = 返回值 = *this的副本 = a的副本
例3:
输出:
construct 0012FF38 //a的构造
construct 0012FF34 //b的构造
copy 0012FF30 //返回值的构造
= 0012FF34 //把返回值的内容赋值给b
delete 0012FF30 //返回值的析构
delete 0012FF34 //b的析构
delete 0012FF38 //a的析构
解释:
L13中,把返回值的内容赋值给b,然后返回值析构