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

Why can't base type pointer take derived class object's adress value?

本文关键字:对象 地址 派生 类型 基类 指针 不能 获取 为什么      更新时间:2023-10-16
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!

为什么?

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

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

请解释原理和原因。

访问控制的全部意义在于...控制谁可以访问类的哪些部分。 "受保护"表示只有派生类才具有访问权限。

类上的访问级别决定了对基子对象的访问。综上所述,这意味着只有派生类才能访问受保护的基子对象。因此,不允许在派生自A的类之外将&b转换为指向A的指针。