class A{
fct1(){};
};
class B:public A{
fct2(){};
};
// B b;
// A* a = &b; good! possible!!
class A{
fct1(){};
};
class B:protected A{
fct2(){};
};
//B b;
// A* a=&b; error!
为什么会这样?
受保护的继承与指针有什么关系?
我了解到受保护的继承将公共区域更改为受保护区域,因此只有派生类才能访问其成员函数和变量。 :(
请解释原则和原因。
答案 0 :(得分:0)
访问控制的重点是......控制谁可以访问某个类的哪些部分。 “受保护”意味着只有派生类才能访问。
基类的访问级别确定对基础子对象的访问。将它们组合在一起,这意味着只有派生类才能访问受保护的基础子对象。因此,在&b
派生的类之外,不允许将A
转换为指向A
的指针。