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; } };
父类中私有成员也是被子类继承下去了,只是由编译器给隐藏后访问不到
浙公网安备 33010602011771号