C++ 继续

打印 上一主题 下一主题

主题 1030|帖子 1030|积分 3090

继续

继续基本语法

提要点:class 子类 : 继续方式 父类
  1. //继承语法: class 自己定义的类(子类):继承方式 父类
  2. #include<iostream>
  3. using namespace std;
  4. class Person
  5. {
  6. public:
  7.     void body()
  8.     {
  9.         cout<<"Hello pretty girl"<<"\n";
  10.     }
  11.     void age1()
  12.     {
  13.         cout<<"19"<<"\n";
  14.     }
  15. };
  16. class Alaso_shuang : public Person
  17. {
  18. public:
  19.     void voice()
  20.     {
  21.         cout<<"interesting to listen"<<"\n";
  22.     }
  23. };
  24. void test()
  25. {
  26.     Alaso_shuang Alaso;
  27.     Alaso.age1();
  28.     Alaso.body();
  29.     Alaso.voice();
  30. }
  31. int main()
  32. {
  33.     test();
  34.     return 0;
  35. }
复制代码

继续方式


提要点:
1.继续方式分为:公共继续(public)掩护继续(protected)私有继续(private)
2.当子类以共有继续 继续父类时,父类全部的对象(除了private)都是可以以共有继续形式访问
2.当子类以 掩护继续 继续父类时,子类全部继续对象均以掩护继续的形式出现,并且表里不能访问
3.当子类以 私有继续 继续父类时,子类全部继续对象均以私有继续的形式出现
  1. #include<iostream>
  2. using namespace std;
  3. class F
  4. {
  5. public:
  6.     int a;
  7. protected:
  8.     int b;
  9. private:
  10.     int c;
  11. };
  12. class F1
  13. {
  14. public:
  15.     int a;
  16. protected:
  17.     int b;
  18. private:
  19.     int c;
  20. };
  21. class F2
  22. {
  23. public:
  24.     int a;
  25. protected:
  26.     int b;
  27. private:
  28.     int c;
  29. };
  30. class son : public F
  31. {
  32. public:
  33.     void f()
  34.     {
  35.         a = 10;//父类中公共权限成员拿到手了
  36.     }
  37. protected:
  38.     void f1()
  39.     {
  40.         b = 20;
  41.     }
  42. // private:
  43. //     void f3()
  44. //     {
  45. //         c = 1;//报错啦
  46. //     }
  47. };
  48. class son1 : protected F1
  49. {
  50. protected:
  51.     void f1()
  52.     {
  53.         a = 10;
  54.         b = 40;
  55.         //c = 90;//继续报错,说明父类隐私不允许访问
  56.     }
  57. };
  58. class son2 : private F2
  59. {
  60. private:
  61.     void f5()
  62.     {
  63.         a = 100;
  64.         b = 300;
  65.     }
  66. };
  67. void test01()
  68. {
  69.     son1 s;
  70. }
  71. int main()
  72. {
  73.     test01();
  74.     return 0;
  75. }
复制代码

继续中对象模型


提要点:父类中全部对象均会被子类继续
  1. #include<iostream>
  2. using namespace std;
  3. class f
  4. {
  5. public:
  6.     int a;
  7. protected:
  8.     int b;
  9. private:
  10.     int c;
  11. };
  12. class son1:public f
  13. {
  14.     int a;
  15. };
  16. void solve()
  17. {
  18.     son1 s;
  19.     cout<<"sizeof's value : "<< sizeof(s);
  20. }
  21. int main()
  22. {
  23.     solve();
  24.     //答案是16,说明父类所有的成员都继承在了子类身上
  25.     return 0;
  26. }
复制代码

继续同名成员处理方式


提要点:
1.访问子类同名成员(直接访问即可)
2.访问父类同名成员(需要加作用域)
  1. #include<iostream>
  2. using namespace std;
  3. class F
  4. {
  5. public:
  6.     F()
  7.     {
  8.         a = 10000;
  9.     }
  10. public:
  11.     int a;
  12. };
  13. class son1 : public F
  14. {
  15. public:
  16.     son1()
  17.     {
  18.         a = 2000000;
  19.     }
  20.    
  21. public:
  22.     int a;
  23. };
  24. void solve()
  25. {
  26.     son1 s;
  27.     cout<<s.a<<"\n";
  28.     F f;
  29.     cout<<f.F::a<<"\n";//父类添加作用域
  30. }
  31. int main()
  32. {
  33.     solve();
  34.     return 0;
  35. }
复制代码

多继续


提要点:语法:子类:public 父类1,public 父类2
(不建议利用该格式,会引来麻烦)
  1. #include<iostream>
  2. using namespace std;
  3. class F1
  4. {
  5. public:
  6.     F1()
  7.     {
  8.         m_A = 100000;
  9.     }
  10. public:
  11.     int m_A;
  12. };
  13. class F2
  14. {
  15. public:
  16.     F2()
  17.     {
  18.         m_B = 200000;
  19.     }
  20.    
  21. public:
  22.     int m_B;
  23. };
  24. class children : public F1,public F2//继承两个父类
  25. {
  26. public:
  27.     int c_M;
  28.     int d_M;
  29. };
  30. void test()
  31. {
  32.     children C;
  33.     cout<<sizeof(C)<<"\n";
  34.     cout<<C.m_A<<"\n";
  35.     cout<<C.m_B<<"\n";
  36.     //若是父类成员名称相同,就按照继承同名成员方式处理,直接加作用域即可
  37. }
  38. int main()
  39. {
  40.     test();
  41.     return 0;
  42. }
复制代码

菱形继续


提要点:
1.菱形继续会导致所指对象的属性不明白,还会浪费空间
2.办理菱形继续的办法:虚继续,在父类前加一个 virtual即可
一样寻常我们不会写菱形继续的形式,在此也不做代码解释了哈哈哈哈哈

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表