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

Я знаю, что есть один и тот же вопрос по этой теме. Но я все еще в замешательстве. Пожалуйста, объясните, как конструктор класса 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

4

Решение

Частное наследство означает, что все общественные и защищенные члены базы стать частным в производном классе. Так 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
};
6

Другие решения


По вопросам рекламы [email protected]