C++中的多级保护继承
Posted
技术标签:
【中文标题】C++中的多级保护继承【英文标题】:Multilevel protected Inheritance in C++ 【发布时间】:2021-11-20 15:42:50 【问题描述】:我有一个场景,我正在实现多级继承,但第一级继承被指定为受保护的继承,但这给了我编译问题。
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 对象的 A 类类型的指针?
【问题讨论】:
en.cppreference.com/w/cpp/language/access 每个人都知道C
是B
,但只有B
和C
知道B
和C
是A
s。 main
不是B
或C
的一部分,因此它不能利用这种关系。
不在main范围中访问受保护的成员数据。那将在C::C()
的范围内。
【参考方案1】:
由于其受保护状态,main 不知道继承关系。
class B: protected A
是什么使它在B::
和C::
之外无法访问
【讨论】:
以上是关于C++中的多级保护继承的主要内容,如果未能解决你的问题,请参考以下文章