【发布时间】:2011-06-05 01:44:51
【问题描述】:
我读到声明为成员函数的重载运算符是不对称,因为它只能有一个参数,而自动传递的另一个参数是this 指针。所以没有标准来比较它们。另一方面,声明为friend 的重载运算符是对称的,因为我们传递了两个相同类型的参数,因此可以比较它们。
我的问题是,当我仍然可以将指针的左值与引用进行比较时,为什么首选朋友? (使用非对称版本的结果与对称版本相同) 为什么 STL 算法只使用对称版本?
【问题讨论】:
-
您的问题实际上只是关于二元运算符。并非所有重载运算符都仅限于单个参数。 () 运算符可以采用任意数量的参数。另一方面,一元运算符不能有任何参数。
-
这是C++ FAQ: Operator overloading中涵盖的众多主题之一
标签: c++ operator-overloading member-functions friend-function non-member-functions