Чем char& operator[] отличается от bool operator==?Один помещает операнд между [], а другой помещает операнд после ==.Как он узнает, куда поместить операнд?Есть ли какая-нибудь особенность для открытых и закрывающих скобок?
char& operator[]
bool operator==
[]
==
Как он узнает, куда поместить операнд?
Гм.Поскольку стандарт так говорит?
§11.5.5 Подписка [over.sub] / 1 :
operator[] должна быть нестатическим элементомфункция с ровно одним параметром.Он реализует синтаксис подписки выражение postfix [ expr-or-braced-init-list ] Таким образом, выражение подписки x[y] интерпретируется как x.operator[](y) для объекта класса x типа T, если существует T::operator[](T1) и если оператор выбран в качестве функции наилучшего соответствия с помощью механизма разрешения перегрузки ([over.match.best]).
operator[] должна быть нестатическим элементомфункция с ровно одним параметром.Он реализует синтаксис подписки
operator[]
выражение postfix [ expr-or-braced-init-list ]
Таким образом, выражение подписки x[y] интерпретируется как x.operator[](y) для объекта класса x типа T, если существует T::operator[](T1) и если оператор выбран в качестве функции наилучшего соответствия с помощью механизма разрешения перегрузки ([over.match.best]).
x[y]
x.operator[](y)
x
T
T::operator[](T1)