gpt4 book ai didi

c++ - 使用声明修改派生类中的访问说明符

转载 作者:太空宇宙 更新时间:2023-11-04 13:33:53 24 4
gpt4 key购买 nike

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

不过,我读到过使用声明可以更改派生类中基类成员的访问级别。

class A{
    protected:
    int n;
};

class B:protected A{
    public:
    using  A::n;
};

int main(){
    B obj;
    obj.n=0;
}

在上面的示例中,我在派生类中将 protected 成员的访问级别更改为 public。这是故意允许的吗?为什么不能强制访问级别应该更严格或等于它在基类中的方式(这也可以通过派生列表中的访问资格来控制)但不能比访问级别更宽松在基础类?这是允许的,因为这允许一些有趣的设计模式吗?我只是想理解为什么允许这样违反类强制封装原则的事情?

最佳答案

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

关于c++ - 使用声明修改派生类中的访问说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com