gpt4 book ai didi

c++ - C++ 中的私有(private)继承可见性/访问

转载 作者:行者123 更新时间:2023-11-30 01:33:31 25 4
gpt4 key购买 nike

为什么接口(interface)由于私有(private)继承而在方法中具有特殊的可见性?

请注意,我的派生类中需要全局说明符 ::

我不明白为什么一个方法会因为私有(private)继承而继承某种可见性。派生类无法访问 Control 是完全合理的。但为什么它也不能通过成员访问?

class Control
{
public:
void ModifySomething();
};

class Base : private Control
{
private:
virtual void Update( Control& i_control );
};

class Derived : public Base
{
private:
// ----------↓↓
void Update( ::Control& i_control ) override;
};

注意:我知道我们可以通过组合来解决这个问题。但我想知道为什么它在 C++ 中是这样定义的。我们可以打破 const-ness 什么的吗?

最佳答案

class Derived 无权访问 class Base 中的任何 private,因此它无权访问 class通过Base控制。但是,它可以直接访问 Control,因为它是在与 Derived 相同的全局范围内声明的。

正如@formerlyknownas_463035818 评论的那样,从 DerivedControl 有两条路径,但一条路径由于 private 访问控制而被阻止,所以另一条,全局路径,被选中。

关于c++ - C++ 中的私有(private)继承可见性/访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58380104/

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