赋值操作符、加号+操作符重载的一些注意

赋值操作符

1、赋值必须返回对 *this 的引用

这与内置类型的赋值一致。而且, 因为赋值返回一个引用,就不需要创建和撤销结果的临时副本

2、是否为自赋值

用if(this==&other)来判断,若是,直接返回*this

否则,自赋值可能会导致dangling pointer

3、是否需要delete掉分配给*this的内存空间

如果不delete,直接赋值,会导致memory leak

 

加号操作符重载

1.一般而言,将算术和关系操作符定义为非成员函数

2.加法操作符并不改变操作符的状态,操作符是对 const 对象的引用

3.为了与内置操作符保持一致,加法返回一个右值, 而不是一个引用

4.要返回的右值一般用复制构造函数创建局部变量,不要自己新new一个,否则当函数结束时没法delete掉

posted @ 2021-03-31 21:31  NoerForest  阅读(99)  评论(0)    收藏  举报