ООП. Какие операции разрешается перегружать только как методы класса? И почему?

Правильно ли я понимаю что, это операторы =, [ ], ( ), -> и приведение типа?
Почему они?
Спасибо!
  • Вопрос задан
  • 3240 просмотров
Пригласить эксперта
Ответы на вопрос 2
Может дело в том, что эти операторы имеют смысл только с объектами класса, в то время как другие могут быть переопределены еще для перечислений.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Стандарт С++99, глава 13.5 Overloaded operators:
An operator function shall either be a non-static member function or be a non-member function and have at
least one parameter whose type is a class, a reference to a class, an enumeration, or a reference to an enu-
meration. It is not possible to change the precedence, grouping, or number of operands of operators. The
meaning of the operators =, (unary) &, and , (comma), predefined for each type, can be changed for spe-
cific class and enumeration types by defining operator functions that implement these operators. Operator
functions are inherited in the same manner as other base class functions


Т.е. все перечисленные вами операторы могут быть свободными функциями. Не могут. Дальше в той же главе пишут об отдельных операторах.

Почему -- думаю, что исключительно по традиции. Не вижу других причин, по которым нельзя было бы написать, скажем

const B& operator [] (const A& obj, int idx);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы