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

时间:2018-09-29 06:44:12

标签: c++ operator-overloading

char& operator[]bool operator==有何区别?一个将操作数放在[]之间,而另一个将操作数放在==之后。如何知道将操作数放在何处?开括号和闭括号有什么特别的技巧吗?

1 个答案:

答案 0 :(得分:4)

  

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

嗯。因为标准这么说?

§11.5.5 Subscripting [over.sub]/1

  

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

     

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

     

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