Перегрузка операторов в C ++ - PullRequest
6 голосов
/ 21 марта 2010

Если вы перегружаете - как operator- (), он должен использоваться слева от объекта, а перегрузка () - как operator () () - справа от объекта. Как мы узнаем, какой оператор будет использоваться слева, а какой - справа?

Ответы [ 2 ]

3 голосов
/ 21 марта 2010

Посмотрите на таблицу приоритетов операторов . Это скажет вам направление, которое оператор связывает (связывает). Обратите внимание, что некоторые операторы имеют несколько форм с разными значениями, например, двоичные и унарные -. В таких случаях вы можете иметь несколько перегрузок, например:

T operator-()

и

T operator-(const T &o)

Компилятор выбирает правильный, основываясь на синтаксической интерпретации оператора.

См. Также этот полезный набор рекомендаций .

1 голос
/ 21 марта 2010

Большинство унарных операторов могут быть размещены только на определенной стороне их операнда.Для двух особых случаев ++ и -- см. этот FAQ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...