Ваш вопрос звучит так, как будто private
участники были бы вообще бесполезны. Я имею в виду, что вы могли бы также спросить, для чего нужен частный член, если к нему нельзя получить доступ извне. Однако класс (обычно) имеет больше, чем может использовать подкласс.
Рассмотрим этот простой пример:
struct foo {
void print();
};
struct bar : private foo {
void print_bar() {
std::cout << " blablabla \n";
print();
std::cout << " bblablabla \n";
}
};
Класс, наследующий от bar
, даже не заметит, что bar
наследует от foo
. Тем не менее, bar
имеет смысл наследовать от foo
, поскольку использует его функциональность.
Обратите внимание, что частное наследование на самом деле ближе к композиции, а не к публичному наследованию, и выше также может быть
struct bar {
foo f;
void print_bar() {
std::cout << " blablabla \n";
print();
std::cout << " bblablabla \n";
}
};
Как получить доступ к частным унаследованным членам класса в C ++?
Вне класса: Вы не знаете, для чего private
. Это не отличается для частных членов или частных методов в целом, они существуют по определенной причине, вы просто не можете получить к ним доступ извне.