C++有三种继承方式

  • 公共继承
  • 保护继承
  • 私有继承

    公共继承

    公共继承是指保持最大权限进行继承,将继承过来的成员都变成自己的公共属性

    保护继承

    保护继承指将继承过来的成员都变成自己的保护属性

    私有继承

    私有继承指将继承过来的变量成为自己的私有属性

不论哪种继承,都相当与把继承方式作为一种宏观调整来保存过来。

  1. class Father {
  2. public:
  3. int m_a;
  4. protected:
  5. int m_b;
  6. private:
  7. int m_c;
  8. };
  9. class son : public Father {
  10. //相当于:
  11. public:
  12. public:
  13. int m_a;
  14. protected:
  15. int m_b;
  16. private:
  17. int m_c;
  18. };
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. class Base1
  5. {
  6. public:
  7. int m_A;
  8. protected:
  9. int m_B;
  10. private:
  11. int m_C;
  12. };
  13. //公共继承
  14. class Son1 :public Base1
  15. {
  16. public:
  17. void func()
  18. {
  19. m_A; //可访问 public权限
  20. m_B; //可访问 protected权限
  21. //m_C; //不可访问
  22. }
  23. };
  24. void myClass()
  25. {
  26. Son1 s1;
  27. s1.m_A; //其他类只能访问到公共权限
  28. }
  29. //保护继承
  30. class Base2
  31. {
  32. public:
  33. int m_A;
  34. protected:
  35. int m_B;
  36. private:
  37. int m_C;
  38. };
  39. class Son2 :protected Base2
  40. {
  41. public:
  42. void func()
  43. {
  44. m_A; //可访问 protected权限
  45. m_B; //可访问 protected权限
  46. //m_C; //不可访问
  47. }
  48. };
  49. void myClass2()
  50. {
  51. Son2 s;
  52. //s.m_A; //不可访问
  53. }
  54. //私有继承
  55. class Base3
  56. {
  57. public:
  58. int m_A;
  59. protected:
  60. int m_B;
  61. private:
  62. int m_C;
  63. };
  64. class Son3 :private Base3
  65. {
  66. public:
  67. void func()
  68. {
  69. m_A; //可访问 private权限
  70. m_B; //可访问 private权限
  71. //m_C; //不可访问
  72. }
  73. };
  74. class GrandSon3 :public Son3
  75. {
  76. public:
  77. void func()
  78. {
  79. //Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到
  80. //m_A;
  81. //m_B;
  82. //m_C;
  83. }
  84. };