Частное наследование Мало сказано об особенности С++ частном наследовании. Когда один класс
происходит от другого класса публично, то это становится известно всему коду, к
родительскому классу которого он принадлежит. Например:
class Cat : public Mammal
Это означает, что весь этот код будет знать, что Cat это объект от Mammal. И будет
возможно указывать на экземпляр Cat* используя указатель базового класса
Mammal. Например, следующий код будет действительным:
Cat cat;
Mammal* mammalPtr = &cat; //
Указывает на Cat так если бы он был
// Mammal
Этот код хорош, если Cat наследуется от Mammal публично. Частное наследование
это, когда коду снаружи класса Cat не позволено знать родительский класс:
class Cat : private Mammal
Здесь, внешне вызываемый код не будет “знать”, что класс Cat происходит от
класса Mammal. Привидение типов экземпляра Cat к базовому классу Mammal не
разрешено компилятором, когда наследование частное (private). Используйте
частное наследование, когда вам нужно скрыть факт того, что определённый класс
происходит от определённого родительского класса.
Однако частное наследование редко применяется на практике. Большинство
классов используют лишь публичное наследование. Если вы желаете знать больше
о частном наследовании, посмотрите:
http://stackoverflow.com/questions/406081/why-should-i-avoid-multiple-inheritance-in-c
.