- Первый параметр оператора опускается, им становится экземпляр класса (this).
- Его можно сделать константным методом.
- У него имеется доступ к не-public членам.
- Оператор можно сделать виртуальным.
Показаны сообщения с ярлыком перегрузка. Показать все сообщения
Показаны сообщения с ярлыком перегрузка. Показать все сообщения
пятница, 29 октября 2010 г.
30. Перечислите особенности перегрузки операций как методов класса. Чем отличается перегрузка внешним образом от перегрузки как метода класса?
среда, 27 октября 2010 г.
29. Можно ли определить новую операцию?
Нельзя. Технически это было бы несложно, но создало бы больше проблем, чем решило. Допустим, мы решили добавить операцию **, означающую в некоторых языках возведение в степень. Посмотрим, какие возникают трудности.
- Неоднозначность. Как интерпретировать a**b? (a)**(b) или a*(*b). Заметьте, оба варианта синтаксически корректны, но имеют разный смысл. Придется создавать правила для разрешения этой ситуации.
- Ассоциативность. Чему эквивалентно a**b**c? (a**b)**c или a**(b**c)?
- Приоритет. Чему эквивалентно a+b**c? (a+b)**c или a+(b**c)?
вторник, 26 октября 2010 г.
28. Можно ли при перегрузке изменить приоритет операции?
К счастью, нет :) Это создало бы слишком много проблем.
понедельник, 25 октября 2010 г.
27. Можно ли перегружать операции для встроенных типов данных?
Нет. Вообще, хотя бы одно из значений оператора должно являться пользовательским типом.
воскресенье, 24 октября 2010 г.
26. Какие операции нельзя перегружать? Как вы думаете, почему?
По-моему, чаще используется слово "оператор", я так и буду их называть.
Перегружать можно следующие операторы:
А нельзя (подсмотрел у Страуструпа):
Также нельзя определить новые лексемы.
Перегружать можно следующие операторы:
+ - * / % ^ & | ~ ! = < >
+= -= *= /= %= ^= &= |=
<< >> >>= <<= == != <= >=
&& || ++ -- ->* , -> [] ()
new new[] delete delete[]
А нельзя (подсмотрел у Страуструпа):
::
(разрешение области видимости).
(выбор члена).*
(выбор члена через указатель на член)?:
тернарный операторsizeof, typeid
Также нельзя определить новые лексемы.
Подписаться на:
Сообщения (Atom)