- Scott Meyers说,如果没有必要,那么你的操作符重载要与内置类型保持高度一致性。当你实现操作符重载时,你应该想一想,内置类型是否支持这样做?内置类型还支持怎样做?
- C++的内置类型支持连续赋值,像下面这样,
int x = 0, y = 1, z = 2;
x = y = z = 3;
- 所以你重载的operator=应该允许连续赋值。所以你的operator=应该返回引用。
class MyClass{
public:
MyClass& operator=(const MyClass& m); //返回引用
}
- operator=返回引用是一条我们默认遵守的协议。这个协议也适用于所有的赋值操作,如operator+=,operator-=等等。
- 如果没有更好的理由,希望你遵守这个协议。
主要来自:《EffectiveC++》