【发布时间】:2015-07-12 01:21:01
【问题描述】:
这个问题很好地回答了为什么要将运算符重载定义为非成员:Operator overloading : member function vs. non-member function?
如果将运算符重载函数定义为成员函数, 然后编译器将像 s1 + s2 这样的表达式翻译成 s1.操作员+(s2)。这意味着,运算符重载成员函数 在第一个操作数上调用。这就是成员函数的工作原理!
但是如果第一个操作数不是类怎么办?有一个大问题 如果我们想重载一个第一个操作数不是 类类型,而不是说双。所以你不能这样写 10.0 + s2。但是,您可以为 像 s1 + 10.0 这样的表达式。
现在我遇到需要重载operator== 的情况。在我的例子中,只会比较 (a) (b) 相同类型的对象。
是否有理由仍然将operator== 定义为非成员,或者在这种情况下我应该将其作为成员来实现?
【问题讨论】:
-
据您所知,今天只会比较相同类型的对象。你不知道未来。好风格就是好风格。