char& operator[]
与bool operator==
有何区别?一个将操作数放在[]
之间,而另一个将操作数放在==
之后。如何知道将操作数放在何处?开括号和闭括号有什么特别的技巧吗?
答案 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])作为最佳匹配函数。