为classes 实现赋值操作符时应该遵循的协议:
class Widget {
public:
Widget& operator=(cosnt Widget & rhs)
{ // 返回类型是个reference, 指向当前对象
return *this; // 返回左侧对象
}
};
这个协议不仅适用于以上的标准赋值形式, 也适用于所有赋值相关运算, 例如:
class Widget {
public:
Widget& operator+=(const Widget & rhs)
{ // 这个协议适用于+=, -=, *=, 等等
return *this;
}
Widget& operator=(int rhs)
{ // 此函数也适用, 即使此一操作符的参数类型不符协定
return *this;
}
};
总结:
令赋值(assignment)操作符返回一个reference to *this。