Что является основными и самыми важными правилами (за и против), я должен подать заявку, когда я пишу класс, который будет наследован третьим лицом.
Спасибо.
Основное правило: Сделайте интерфейсы простыми для правильного использования и трудными для неправильного использования . Это из 3-го издания превосходной книги Скотта Мейерса Эффективный C ++ .
Вот еще несколько хороших руководств по дизайну классов.
Я работаю на Java, поэтому правила наследования немного отличаются, но вот моя точка зрения:
SOLID...
S SRP Single responsibility principle, the notion that an object should have only a single responsibility. O OCP Open/closed principle, the notion that “software … should be open for extension, but closed for modification”. L LSP Liskov substitution principle, see also design by contract. I ISP Interface segregation principle, the notion that “many client specific interfaces are better than one general purpose interface.” D DIP Dependency inversion principle, the notion that one should “Depend upon Abstractions. Do not depend upon concretions.” Dependency injection is one method of following this principle.
взято из http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29
(или любой другой акроним, который вам нравится)
HTH
Andy
Правила:
Не делайте этого. По возможности избегайте использования наследования.
Класс должен иметь хотя бы одну виртуальную функцию. в частности, деструктор должен быть виртуальным.
Вероятно, класс должен быть абстрактным.