使用声明来修改派生类中的访问说明符

时间:2015-05-25 08:40:40

标签: c++

作为面向对象语言的C ++的主要设计原则之一是让每个类强制执行谁可以访问它的内部和谁不能访问它。基类控制它的访问级别,即使它是嵌入从Base派生的类的对象中的基类对象。

但是,我读到了使用可以允许更改Derived类中Base类成员的访问级别的声明。

S0030000FC
S21404000055AA55AA072000010008000938383138D7
S21404001046305730343130302020202027992401B0
...

在上面的示例中,我将派生类中受保护成员的访问级别更改为public。这是允许的吗?为什么不能强制执行访问级别应该更严格或等于它在基类中的方式(这也可以通过派生列表中的访问限定来控制)但不能比访问级别更宽松在基类?这是允许的,因为这允许一些有趣的设计模式?我只是想了解为什么这样的东西会破坏类强制执行的封装原则?

1 个答案:

答案 0 :(得分:0)

一个原因是,即使您不是基类的所有者,也可以通过这种方式更改可见性修饰符。 例如,如果基类包含在外部库/框架中,则可以更改可见性修饰符。

相关问题