根据对该线程的回复,operator=
不能作为非成员函数重载。因此,例如,以下内容使编译器非常生气:
class MyClass
{
// ...
};
MyClass& operator=(MyClass& Left, MyClass& Right)
{
// ...
}
为什么是这样?我有一个带有 getter 和 setter 的容器类,所以成员函数是不必要的,它会破坏封装。上述线程的一个答案是确保“将 L 值作为其第一个操作数接收”,但我不完全理解这意味着什么。有人可以澄清一下吗?
此外,是、、和operator=
“operator()
奇怪”的情况......?或者我应该将所有重载运算符实现为成员函数......?(我知道这样做是完全合法的,但我正在寻找更好的做法。)operator[]
operator->