首页 > 解决方案 > 为什么在保护模式下继承向上转换不起作用

问题描述

当我在保护模式下继承类时为什么Derived* to Base*会失败

class Base { };

class Derived : protected Base { };

int main()
{
   Base* b = new Derived(); // compile error
}

标签: c++

解决方案


对基类的访问与对任何成员的访问相同。从外部来看,访问是完全被禁止的。只有特权代码(可以访问其他受保护甚至私有部分的代码)才能以这种方式访问​​基类。


推荐阅读