Как конструктор работает в частном наследовании

Я знаю, что есть один и тот же вопрос по этой теме. Но я все еще в замешательстве. Пожалуйста, объясните, как конструктор класса A выполняется с obj даже я наследую конструктор класса А в частном порядке.

#include <iostream>
using namespace std;
class A{
    public:
        A(){
            cout << "A" << endl;
        }
};
class B:private A{
    public:
        B(){
            cout << "B" << endl;
        }
};
int main(){
    B obj;

    return 0;
}

Выход

A
B

1 ответ

Решение

Частное наследование означает, что все публичные и защищенные базовые члены становятся частными в производном классе. Так A::A() является частным в Bи, таким образом, идеально доступны из B::B(),

Какие B::B() не могут использовать частные конструкторы A (но у вас их нет):

struct A
{
public:
    A();
protected:
    A(int);
private:
    A(int, int);
};

struct Derived : /* access irrelevant for the question */ A
{
    Derived() : A() {}      // OK
    Derived() : A(10) {}    // OK
    Derived() : A(1, 2) {}  // Error, inaccessible
};
Другие вопросы по тегам