Max*_*xpm 10 c++ oop encapsulation operator-overloading assignment-operator
根据对这个帖子的回复,operator=不能作为非成员函数重载.因此,例如,以下内容使编译器非常生气:
class MyClass
{
// ...
};
MyClass& operator=(MyClass& Left, MyClass& Right)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我有一个带getter和setter的容器类,因此不需要成员函数,它会破坏封装.上述线程的答案之一是说确保"L值被接收为其第一个操作数",但我不完全理解这意味着什么.有人可以澄清一下吗?
此外,有operator=,operator(),operator[]和operator->"古怪"的情况下......?或者我应该将所有重载的运算符实现为成员函数......?(我知道不这样做是完全合法的,但我正在寻找更好的做法.)
如果您的类没有赋值运算符(作为成员),则编译器默认生成一个,就像它生成一个复制构造函数一样,如果您没有提供一个.
因此,如果您稍后尝试定义非成员赋值运算符,它将"生气".然后会有两个!