wap视频网站建设难吗做关键词优化需要修改网站标题
2026/6/28 15:26:17 网站建设 项目流程
wap视频网站建设难吗,做关键词优化需要修改网站标题,厦门维品网站建设,软件外包多少钱C 继承不只是“抄代码”#xff01;三种继承方式#xff0c;权限大不同#xff01;你以为 class Son : public Base 中的 public 只是个摆设#xff1f; 错#xff01;它决定了子类能“看到”父类多少内容#xff0c;甚至影响整个类的设计#xff01;大家好#xff01;…C 继承不只是“抄代码”三种继承方式权限大不同你以为class Son : public Base中的public只是个摆设错它决定了子类能“看到”父类多少内容甚至影响整个类的设计大家好在上一篇我们讲了继承如何减少重复代码今天我们要深入一步C 的继承其实有三种“姿势”——公共继承、保护继承、私有继承。它们看起来只差一个关键字但对成员访问权限的影响却天差地别别担心我们用一个清晰的例子 表格对比带你彻底搞懂 先看基础父类的三种成员权限假设我们有一个基类Baseclass Base { public: int m_A; // 公共成员 protected: int m_B; // 保护成员 private: int m_C; // 私有成员子类永远不可见 };public任何地方都能访问protected类内部 派生类可访问外部不可private仅本类内部可访问子类也看不到⚠️ 注意无论哪种继承方式父类的 private 成员子类都不可直接访问 三种继承方式到底有什么区别C 的继承语法是class 子类 : 继承方式 父类其中继承方式有三种继承方式语法示例对父类成员权限的影响公共继承: public Base权限保持不变保护继承: protected Base父类的public→ 子类中变为protected私有继承: private Base父类的public/protected→ 子类中全变private下面我们逐个来看✅ 1. 公共继承public inheritanceclass Son1 : public Base { public: void func() { m_A; // ✅ 可访问仍是 public m_B; // ✅ 可访问仍是 protected // m_C; // ❌ 不可访问private } }; void test() { Son1 s; s.m_A; // ✅ 外部可以访问因为是 public }公共继承 “是…的一种”关系比如 “学生 是 人 的一种”所以通常用public这也是最常用的继承方式 2. 保护继承protected inheritanceclass Son2 : protected Base { public: void func() { m_A; // ✅ 可访问但在 Son2 中已变成 protected m_B; // ✅ 可访问仍是 protected // m_C; // ❌ 不可访问 } }; void test() { Son2 s; // s.m_A; // ❌ 编译错误m_A 在 Son2 中是 protected外部不能访问 }保护继承 “内部复用但不对外暴露”适用于你想复用父类功能但不希望用户通过子类对象直接访问父类接口。️ 3. 私有继承private inheritanceclass Son3 : private Base { public: void func() { m_A; // ✅ 可访问但在 Son3 中变为 private m_B; // ✅ 可访问也变为 private // m_C; // ❌ 不可访问 } }; // 再派生一层 class GrandSon3 :public Son3 { public: void func() { // m_A; // ❌ 无法访问因为 Son3 是私有继承GrandSon3 看不到 Base 的成员 // m_B; // ❌ 同上 } }; void test() { Son3 s; // s.m_A; // ❌ 外部无法访问已是 private }私有继承 ≈ “组合”的替代写法它表示“用到了父类的功能但不是‘是一种’的关系”。比如Car私有继承Engine—— 车“包含”引擎但车不是引擎 一张表总结所有情况父类成员public 继承protected 继承private 继承public成员→ 子类中仍为public→ 变为protected→ 变为privateprotected成员→ 仍为protected→ 仍为protected→ 变为privateprivate成员→ 子类不可见→ 子类不可见→ 子类不可见✅记住口诀“公继承保原样保继承降一级私继承全私藏” 实际开发中怎么选90% 场景用public继承当你想表达 “A 是 B 的一种”如 Dog 是 Animal极少用protected/private继承多用于底层库设计或特殊封装需求如果只是想“复用代码”而非“建立类型关系”优先考虑组合has-a而非私有继承 小结C 的继承不只是“复制粘贴”更是一种权限控制机制。三种继承方式本质是在回答一个问题“我愿意让别人通过子类看到父类的哪些部分”掌握它们你才能写出既安全又灵活的面向对象代码思考题如果Base中有一个public函数void show()在private继承下能否在子类的成员函数中调用它外部能否通过子类对象调用欢迎留言讨论提示你提供的示例非常经典清晰展示了三种继承对成员可见性的影响。建议在学习时动手运行一遍加深理解如果你觉得这篇推文有帮助欢迎点赞、转发给正在啃 C 的小伙伴下期我们聊聊“继承中的构造与析构顺序”敬请期待

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询