c++ 继承方式
继承的语法:class 子类 : 继承方式 父类
继承方式一共有三种:
- 公共继承
- 保护继承
- 私有继承
如果是公共继承,父类中的私有方法不能访问。
如果是保护继承,类A中的a,b属性在子类B中变成了保护级别,私有还是不能访问
如果死是私有继承,a,b变成了私有级别,原先为私有级别的c同样不能访问。
示例:
class Base1 { public: int m_A; protected: int m_B; private: int m_C; }; //公共继承 class Son1 :public Base1 { public: void func() { m_A; //可访问 public权限 m_B; //可访问 protected权限 //m_C; //不可访问 } }; void myClass() { Son1 s1; s1.m_A; //其他类只能访问到公共权限 //s1.m_B;//m_B是保护权限,只能在本类及其继承子类中使用,在类外无法调用 } //保护继承 class Base2 { public: int m_A; protected: int m_B; private: int m_C; }; //父类中的保护公共权限,到了子类中变成保护权限 class Son2 :protected Base2 { public: void func() { m_A; //可访问 protected权限 m_B; //可访问 protected权限 //m_C; //不可访问 } }; void myClass2() { Son2 s; //s.m_A; //不可访问 m_A是保护权限,只能在本类及其继承子类中使用,在类外无法调用 } //私有继承 class Base3 { public: int m_A; protected: int m_B; private: int m_C; }; class Son3 :private Base3 { public: void func() { m_A; //可访问 private权限 m_B; //可访问 private权限 //m_C; //不可访问 } }; class GrandSon3 :public Son3 { public: void func() { //Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到 //m_A; //m_B; //m_C; } };
父类中私有成员也是被子类继承下去了,只是由编译器给隐藏后访问不到
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术