c++中的多级保护继承



我有一个场景,我正在实现多级继承,但第一级继承被指定为受保护的继承,但它给我编译问题。

class A
{
protected:
int a1;
};
class B: protected A
{
protected:
int b1;
};
class C: public B 
{
public:
C()
{
a1=10;
b1=20;
cout<<a1<<b1<<endl;
}
};
int main()
{
C c;   //can access A class protected data
A* a= new C; //compilation error: cannot cast 'C'to its protected base class 'A'
}

我的问题是,当我做继承使用保护访问指定,我能够访问所有的A类数据成员,那么为什么我不能有一个类类型持有C对象的指针?

main由于其受保护状态而不受继承关系的影响。

class B: protected A

使得它在B::C::之外不可访问

最新更新