Sobes.tech
Back to questions
Junior — Middle
92

Мог ли бы ты объяснить концепцию приватного наследования в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

Приватное наследование — это механизм в C++, при котором все публичные и защищённые члены базового класса становятся приватными членами производного класса.

Это означает, что:

  • Внешний код не может обращаться к базовым членам через объект производного класса.
  • Производный класс может использовать базовые члены внутри себя, но не раскрывает их интерфейс наружу.

Пример:

class Base {
public:
    void publicMethod() {}
protected:
    void protectedMethod() {}
};

class Derived : private Base {
public:
    void useBase() {
        publicMethod();      // доступно внутри класса
        protectedMethod();   // доступно внутри класса
    }
};

int main() {
    Derived d;
    // d.publicMethod(); // ошибка: publicMethod стал приватным в Derived
    d.useBase(); // ок
}

Приватное наследование используется, когда нужно реализовать функциональность базового класса внутри производного, но не показывать её как часть интерфейса производного класса. Это отличается от публичного наследования, где интерфейс базового класса становится частью интерфейса производного.