构造函数如何在私有继承中工作
How constructor works in private inheritance
我知道关于这个话题也有同样的问题。但我仍然很困惑。请解释 A 的 class 构造函数如何与 obj
一起执行,即使我私下继承了 A 的 class 构造函数。
#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
私有继承意味着所有 public 和受保护的基础成员 在派生 class 中变为私有。所以 A::A()
在 B
中是私有的,因此可以从 B::B()
.
完全访问
B::B()
不能使用的是 private 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
};
我知道关于这个话题也有同样的问题。但我仍然很困惑。请解释 A 的 class 构造函数如何与 obj
一起执行,即使我私下继承了 A 的 class 构造函数。
#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
私有继承意味着所有 public 和受保护的基础成员 在派生 class 中变为私有。所以 A::A()
在 B
中是私有的,因此可以从 B::B()
.
B::B()
不能使用的是 private 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
};