Classes and class hierarchies
C.153
Предпочитайте виртуальную функцию приведению
Причина
Вызов виртуальной функции безопасен, тогда как приведение подвержено ошибкам. Вызов виртуальной функции достигает наиболее производной функции, тогда как приведение может достичь промежуточного класса и, следовательно, дать неверный результат (особенно когда иерархия изменяется в процессе сопровождения).
Пример
???
Контроль
Смотрите C.146 и ???
C.over: Перегрузка и перегруженные операторы
Вы можете перегружать обычные функции, шаблоны функций и операторы. Нельзя перегружать функциональные объекты.
Краткое изложение правил перегрузки:
- C.160: Определяйте операторы прежде всего для имитации традиционного использования
- C.161: Используйте нечленовые функции для симметричных операторов
- C.162: Перегружайте операции, которые примерно эквивалентны
- C.163: Перегружайте только операции, которые примерно эквивалентны
- C.164: Избегайте операторов неявного преобразования
- C.165: Используйте
usingдля точек настройки - C.166: Перегружайте унарный
&только как часть системы умных указателей и ссылок - C.167: Используйте оператор для операции с его традиционным значением
- C.168: Определяйте перегруженные операторы в пространстве имён их операндов
- C.170: Если хочется перегрузить лямбду, используйте обобщённую лямбду