继承的三种方式及其应用案例 c++ 简单易懂

╰+攻爆jí腚メ 2022-10-13 00:29 198阅读 0赞
  1. #include<iostream>//c++标准的输入和输出流
  2. using namespace std;//引用标准的名空间std
  3. class person
  4. {
  5. public:int m_age;
  6. private:string m_lover;
  7. protected:string m_car;
  8. };
  9. class son1 :public person
  10. {
  11. void func()
  12. {
  13. m_age = 10;//公共权限 类内类外都可以访问
  14. m_car = "daben";//保护权限,在类内可以访问,在类外不可以访问
  15. //m_lover = "lisa";//报错,父类的私有权限即使在
  16. //公共继承下子类也是不可以访问的
  17. }
  18. };
  19. class son2 :protected person
  20. {
  21. void func()
  22. {
  23. m_age = 10;//公共权限,在保护继承下变成了保护权限
  24. m_car = "lisi";//保护权限在保护继承下也是保护权限
  25. //注意保护权限在类内可以访问,在类外是不可以被访问的
  26. }//而公共权限在类内和类外都可以被访问
  27. //而私有权限在类内和类外都不可以被访问
  28. };
  29. class son3 :private person
  30. {
  31. public:
  32. void func()
  33. {
  34. m_age = 10;
  35. m_car = "jo";//在私有继承的继承方式下,所有的属性、
  36. //变成了私有的,他的儿子是都不可以访问的
  37. }
  38. };
  39. class grandson3 :public son3
  40. {
  41. void func()
  42. {
  43. //m_age = 10;
  44. //m_car = "kji";
  45. }
  46. };
  47. void test01()
  48. {
  49. son1 p1; p1.m_age = 10; //p1.m_car = "ni"; p1.m_lover = "lsi";
  50. //被注释掉的都是不可以访问的
  51. son2 p; //p.m_age = 10; p.m_car = "ni"; p.m_lover = "lsi";
  52. son3 p3;
  53. }
  54. int main(void)
  55. {
  56. test01();
  57. }
  58. /*总结: //父类中公共的属性按照公共的方式继承该属性也是公共的(在类内和类外都允许访问) //父类中公共的属性按照保护和私人的继承方式的属性不是公共的 //按照保护继承的方式继承下的属性实在子类的类内中可以访问的 //该属性变成看受保护的,但是该属性在类内允许访问 //但是按照私有的方式继承下的属性在子类的类内中时不允许访问的 //该属性已经变成私有的了(在类内也不允许访问) //并且父类中受保护的属性按照公共的方式继承该属性仍然时protected //简单来讲就是: //只有父类中私有的属性在子类的类内和类外读不允许访问 //并且只有子类继承下来的公共的属性既可以在类内访问 //又可以在类外访问 */

发表评论

表情:
评论列表 (有 0 条评论,198人围观)

还没有评论,来说两句吧...

相关阅读