【发布时间】:2012-02-01 19:58:55
【问题描述】:
C++ 允许将= 运算符重载为成员函数,而不是全局函数。
Bruce Eckel 说 if it was possible to define operator= globally, then you might attempt to redefine the built-in = sign. 并且由于这个原因,您只能将 = 运算符重载为成员函数。
如果 C++ 已经定义了 = 运算符,那么为什么 C++ 没有定义像 + - 等其他运算符,因为它们可以作为非成员函数重载。 ?
【问题讨论】:
-
=的语义(通常)很明显。其他人的语义不是 --会为例如做什么std::string? -
这个有很多重复的,让我找一个...
-
这意味着只有运算符
=是由 C++ 预定义的……是这样吗? -
copy 赋值运算符会在编译器需要时自动声明和定义。
-
这个理由似乎是错误的(或者至少非常模棱两可)。是的,通常使用运算符重载,您可以尝试重新定义内置运算符,只是编译器不允许您这样做。
标签: c++ operators operator-overloading