当前位置: 首页 > news >正文

C++权限对继承的影响

C++权限对继承的影响

在C++中,继承权限(publicprotectedprivate)决定了基类成员在派生类中的访问级别。继承权限与基类成员的原始访问修饰符共同作用,形成最终的访问规则。

基类成员的原始访问权限
  • public:成员在类内外均可访问。
  • protected:成员仅在类内和派生类中可访问。
  • private:成员仅在类内可访问,派生类不可见。
继承权限的作用

继承权限会限制派生类对基类成员的访问上限:

  • 公有继承(public:基类的publicprotected成员在派生类中保持原权限。

    classBase{public:intx;protected:inty;private:intz;};classDerived:publicBase{// x: public, y: protected, z: 不可访问};
  • 保护继承(protected:基类的publicprotected成员在派生类中均变为protected

    classDerived:protectedBase{// x: protected, y: protected, z: 不可访问};
  • 私有继承(private:基类的publicprotected成员在派生类中均变为private

    classDerived:privateBase{// x: private, y: private, z: 不可访问};
权限访问规则总结
  1. 派生类内部:访问权限由继承权限和基类成员的原始权限共同决定。

    • 基类的private成员始终不可访问。
    • 继承权限会降低基类public/protected成员的最高访问级别。
  2. 派生类外部:只能通过派生类的对象访问基类的public成员(仅限公有继承)。

    Derived d;d.x;// 仅当继承为public且x在基类为public时合法
  3. 多级继承:权限会逐层叠加限制。例如:

    • A私有继承BC公有继承A,则B的成员在C中均为private
示例代码
classBase{public:inta;protected:intb;private:intc;};// 公有继承classPublicDerived:publicBase{voidfoo(){a=1;// OK: publicb=2;// OK: protected// c = 3; // 错误: private不可访问}};// 保护继承classProtectedDerived:protectedBase{voidfoo(){a=1;// OK: 变为protectedb=2;// OK: protected// c = 3; // 错误}};// 私有继承classPrivateDerived:privateBase{voidfoo(){a=1;// OK: 变为privateb=2;// OK: 变为private// c = 3; // 错误}};
注意事项
  • 默认继承权限:class默认为privatestruct默认为public
  • 权限不影响内存布局,仅影响语法层面的访问控制。
  • 使用using可以调整特定成员的访问权限(需符合原始权限规则)。
http://www.jsqmd.com/news/582354/

相关文章:

  • UE5-MCP架构深度解析:AI驱动的游戏开发自动化引擎
  • C++27执行策略迁移 checklist:从C++20升级必做的7项静态断言校验、3类编译器诊断开关启用及GCC 14.3/Clang 18.1/MSVC 19.42兼容性矩阵
  • 太阳能水位监测站
  • GOOSE-LightGBM自动化参数寻优的多变量分类预测Matlab程序
  • 如何通过CyberpunkSaveEditor实现赛博朋克2077存档编辑与自定义体验?
  • 保研人:值得推荐的保研机构,源于权威背景与海量成功案例 - 博客湾
  • ObsPy实战入门:从时间序列数据处理到地震事件可视化的5个核心技巧
  • Z-Image-Turbo_Sugar脸部Lora效果展示:长时间生成任务稳定性与显存泄漏测试
  • 猫抓扩展深度诊断指南:从症状到解决方案的系统分析
  • C语言条件运算符详解:用法、求值规则及需注意的要点
  • 多功能自动气象站
  • 火焰烟雾识别工程化落地:方案选型到边缘部署
  • 2026台车式退火炉选型对比:国际品牌VS洛阳科热,谁更值得买? - 品牌推荐大师
  • Ant Design Ellipsis 中的判断逻辑 isEleEllipsis 方法非常消耗性能
  • JetBrains Runtime实战指南:5个关键步骤解决90%配置难题
  • 毫秒级响应:MHY_Scanner重构游戏直播扫码体验的技术突破与行业价值
  • C语言怎么学?系统学习路线图分享
  • OpenClaw(小龙虾)Win 11 一键部署教程|490+大模型全覆盖
  • Sif关键词和卖家精灵哪个好(附Sif/卖家精灵折扣码) - 麦麦唛
  • 超低功耗血压和心率监护仪参考设计
  • Python 3.15 新突破:frozendict 带来字典应用新可能
  • 终极指南:如何用QMCDecode快速解密QQ音乐加密格式
  • 边缘计算对工控机的性能要求有多高?
  • AI报告编审解决方案引领生产报告3.0:IA-Lab AI检测报告生成助手协同IACheck,重塑检测行业效率与质量标准
  • 2026 国产 DFM 软件推荐:如何实现 Mentor Valor NPI 的平替 - 品牌2026
  • AI赋能SEO的新纪元:关键词优化策略的最新实践与探索
  • 颈椎疼别硬扛!不是所有按摩都管用,科学治疗才能摆脱困扰
  • 基于深度学习的香蕉成熟度检测系统(YOLO12/11/v8/v5模型+django)(源码+lw+部署文档+讲解等)
  • 在第20届竞赛中,对于车模中电池有哪些要求?
  • 效率革命:用快马替代qoderwork下载,一键生成可复用的React表单组件