cpp运算符重载操作数位置[] vs ==

0 c++ operator-overloading

与有何char& operator[]不同bool operator==?一种将操作数放在中间[],另一种将操作数放在后面==。它如何知道将操作数放在哪里?左括号和右括号有什么特殊的技巧吗?

Swo*_*ish 5

\n

它如何知道将操作数放在哪里?

\n
\n

嗯。因为标准是这么说的?

\n

\xc2\xa711.5.5 下标 [over.sub]/1

\n
\n

operator[]应该是一个只有一个参数的非静态成员函数。它实现了下标语法

\n

后缀表达式[ expr-or-braced-init-list ]

\n

因此,如果存在并且重载解析机制([over.match.best])将运算符选择为最佳匹配函数,则下标表达式将被x[y]解释为类型的x.operator[](y)类对象。xTT\xe2\x80\x8b::\xe2\x80\x8boperator[](T1)

\n
\n