воскресенье, 24 октября 2010 г.

26. Какие операции нельзя перегружать? Как вы думаете, почему?

По-моему, чаще используется слово "оператор", я так и буду их называть.
Перегружать можно следующие операторы:
+ - * / % ^ & | ~ ! = < >
+= -= *= /= %= ^= &= |=
<< >> >>= <<= == != <= >=
&& || ++ -- ->* , -> [] ()
new new[] delete delete[]


А нельзя (подсмотрел у Страуструпа):
  • :: (разрешение области видимости)
  • (выбор члена)
  • .* (выбор члена через указатель на член)
  • ?: тернарный оператор
  • sizeof, typeid
У первых трех в правой части имя, а не значение. У тернарного оператора аж 3 параметра, к тому же его возвращаемое значение является l-value. Переопределять sizeof, typeid, думаю, просто нет смысла.
Также нельзя определить новые лексемы.

1 комментарий:

  1. Уважаемый Филипп, тернарный оператор возвращает rvalue.

    ОтветитьУдалить

Можно использовать теги <b>, <i>