您的位置:首页 > 编程语言 > C语言/C++

Effective C++ 条款10 令operator=返回一个reference to *this 条款11 在operator=中处理"自我赋值"

2015-08-22 15:08 411 查看
1. 为了支持形如“a=b=c”的连锁形式,最好令operator=返回一个reference to *this.

2. 如果类中含有用于指向堆内存的指针,那么赋值操作符就要注意自我赋值的问题,例如:

class A{
public:
void swap(A& rhs){
...
}
A& operator=(A tmp){//注意此处按值传递
A temp(tmp);
swap(temp);
}
private:
int* ptr;
};


View Code
这样牺牲了清晰性而且比之前的例子多了一次对象构造,但采用按值传递实际上"将'copying'动作从函数本体移至'函数参数构造阶段'",这"可令编译器有时生成更高效的代码".

4. 不只是赋值操作符,其它函数如果要操作一个以上对象,而其中有些对象可能是同一个时,也要确保函数行为的正确性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: