在C++面向对象编程中,访问权限继承是理解类之间关系的关键。很多初学者对 public、protected 和 private 在继承时的行为感到困惑。本文将用通俗易懂的方式,带你彻底搞懂 C++访问权限继承 的规则,并通过示例代码加深理解。
在C++中,类的成员可以有三种访问权限:
当一个类从另一个类继承时,基类成员在派生类中的访问权限会根据继承方式发生变化。C++提供了三种继承方式:public、protected 和 private 继承。
下表总结了不同继承方式下,基类成员在派生类中的访问权限变化(假设基类成员原始权限为 X):
| 基类成员权限 | public 继承 | protected 继承 | private 继承 |
|---|---|---|---|
| public | public | protected | private |
| protected | protected | protected | private |
| private | 不可访问 | 不可访问 | 不可访问 |
下面我们通过一个完整的例子来演示不同继承方式对访问权限的影响。
#include <iostream>using namespace std;// 基类class Base {public: int publicVar = 1;protected: int protectedVar = 2;private: int privateVar = 3; // 派生类无法直接访问};// 公有继承class DerivedPublic : public Base {public: void accessMembers() { cout << "publicVar (public继承): " << publicVar << endl; cout << "protectedVar (public继承): " << protectedVar << endl; // cout << privateVar; // 错误!private成员不可访问 }};// 保护继承class DerivedProtected : protected Base {public: void accessMembers() { cout << "publicVar (protected继承): " << publicVar << endl; cout << "protectedVar (protected继承): " << protectedVar << endl; }};// 私有继承class DerivedPrivate : private Base {public: void accessMembers() { cout << "publicVar (private继承): " << publicVar << endl; cout << "protectedVar (private继承): " << protectedVar << endl; }};int main() { DerivedPublic dp; dp.publicVar = 10; // ✅ OK,public继承保持public // dp.protectedVar = 20; // ❌ 错误,protected不能在类外访问 DerivedProtected dpro; // dpro.publicVar = 10; // ❌ 错误!publicVar在protected继承下变为protected DerivedPrivate dpr; // dpr.publicVar = 10; // ❌ 错误!publicVar在private继承下变为private dp.accessMembers(); dpro.accessMembers(); dpr.accessMembers(); return 0;} private 成员在派生类中都不可直接访问。 掌握 C++继承权限 的规则,不仅能写出更规范的代码,还能避免常见的访问错误。记住:默认继承方式在 class 中是 private,而在 struct 中是 public。
希望这篇教程能帮你彻底理解 C++访问权限继承!动手写一写上面的代码,你会理解得更深刻。
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211845.html