为什么基本类型指针不能获取派生类对象的地址值?

时间:2016-05-21 11:47:41

标签: c++ pointers inheritance protected

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!

为什么会这样?

受保护的继承与指针有什么关系?

我了解到受保护的继承将公共区域更改为受保护区域,因此只有派生类才能访问其成员函数和变量。 :(

请解释原则和原因。

1 个答案:

答案 0 :(得分:0)

访问控制的重点是......控制谁可以访问某个类的哪些部分。 “受保护”意味着只有派生类才能访问。

基类的访问级别确定对基础子对象的访问。将它们组合在一起,这意味着只有派生类才能访问受保护的基础子对象。因此,在&b派生的类之外,不允许将A转换为指向A的指针。