CPP 运算符重载操作数位置 [] 与 ==

cpp operator overload operand position [] vs ==

本文关键字:位置 运算符 重载 操作数 CPP      更新时间:2023-10-16

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

它怎么知道将操作数放在哪里?

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

§11.5.5 下标 [over.sub]/1:

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

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

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