您的位置:首页 > 运维架构

复制操作符“operator=”注意事项

2017-07-12 22:34 267 查看
以下所述都是根据《Effective C++》中条款10、11和12总结所得。

一、令operator=发挥一个reference to *this

连锁形式赋值:

int x, y, z;
x = y = z = 15;
//复制采用右结合律,以上赋值被解析为:
x = (y = (z = 15));


为了实现“连锁赋值”,复制操作符必须返回一个reference指向操作符的左侧实参。当然这只是一个协议,没有强制性。不遵守的话,代码一样可以通过。

class Widget{
public:
...
//返回类型是个reference,指向当前对象
Weight& operator(const Widget& rhs)
{
...
return* this;   //返回左侧对象
}
};


当然这个协议也适用于+=,-=,*=等等复制相关运算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: