私有继承和保护继承的访问规则是什么?c++

以这些类为例:

class B                    { /*...*/ };
 class D_priv : private   B { /*...*/ };
 class D_prot : protected B { /*...*/ };
 class D_publ : public    B { /*...*/ };
 class UserClass            { B b; /*...*/ };

子类都不能访问 B 的私有部分。在 D_priv中,B 的公有和保护部分都是私有的。在 D_prot中,B 的公有和保护部分都是保护的。在 D_publ 中,B 的公有部分是公有的,B 的保护部分是保护的(D_publ 是一种 B)。UserClass 类仅仅可以访问 B 的公有部分。

要使 B 的公有成员在 D_priv 或 D_prot中也是公有的,则使用 B:: 前缀声明成员的名称。例如,要使 B::f(int,float)成员在 D_prot中公有,应该这样写:

class D_prot : protected B {
public:
  using B::f;  // 注意: 不是 using B::f(int,float)
};

参考:ref

作者:Jesee

出处:https://www.cnblogs.com/jeseesmith/p/16963264.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ggexs  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示