1. При перекрытии виртуальных функций сохраняйте заменимость.- Обратите внимание на пред- и постусловия в базовом классе.
2. Не изменяйте аргументы по умолчанию виртуальных функций.
3. Явно указывайте перекрываемые функции как виртуальные
4. Не забывайте о сокрытии перегруженных функций в базовом классе.
При корректном наследовании производный класс моделирует частный случай более общей базовой концепции.
Определение в производном классе перекрытия, которое может быть не успешным ( генерировать исключения), будет корректно только лишь если в базовом классе не объявлено, что данная операция всегда успешна.
Не изменяйте аргумент по умолчанию при перекрытии: - Он не является частью сигнатуры функции и клиентский код будет невольно передавать различные аргументы в функцию ( в зависимости от того, какой узел иерархии обращается к ней)
Перекрытие может скрывать перегруженные функции из базового класса:
Если перегруженные функции из базового класса должны быть видно - воспользуетесь "using" в производном классе:
|