• 47)多继承和虚继承


    1)下面是一个多继承的  代码:

        

     1 #include<iostream>
     2 
     3 using namespace std;
     4 class bed
     5 {
     6 
     7 public:
     8     void sleep()
     9     {
    10         cout<<"你可以睡觉"<<endl;
    11     }
    12 };
    13 class sofa
    14 {
    15 
    16 public:
    17         void sit()
    18     {
    19         cout<<"你可以歇息"<<endl;
    20     }
    21 };
    22 
    23 //然后  我还有一个沙发床
    24 //下面是多继承,支持继承两个类,两个类中的所有东西都继承过来了
    25 class sofa_bed:public bed,public sofa
    26 {
    27 public:
    28     void sleep_and_sit()
    29     {
    30         sleep();//继承于bed
    31         sit();//继承于sofa
    32     }
    33 };
    34 
    35 int main()
    36 {
    37 
    38 
    39 
    40     return 0;
    41 }

    2)然后  我又加了一个类  就是  funiture

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 class funiture
     6 {
     7 public:
     8     int cai_zhi;
     9 };
    10 class bed:public funiture
    11 {
    12 
    13 public:
    14     void sleep()
    15     {
    16         cout<<"你可以睡觉"<<endl;
    17     }
    18 };
    19 class sofa:public funiture
    20 {
    21 
    22 public:
    23         void sit()
    24     {
    25         cout<<"你可以歇息"<<endl;
    26     }
    27 };
    28 
    29 //然后  我还有一个沙发床
    30 //下面是多继承,支持继承两个类,两个类中的所有东西都继承过来了
    31 class sofa_bed:public bed,public sofa
    32 {
    33 public:
    34     void sleep_and_sit()
    35     {
    36         sleep();//继承于bed
    37         sit();//继承于sofa
    38     }
    39 };
    40 
    41 int main()
    42 {
    43 
    44 
    45 
    46     return 0;
    47 }

        你看  我的代码 bed类和sofa类  都继承了 funiture  那么都会有 cai_zhi  这个变量,然后  我的sofa_bed  继承了 bed和sofa  那么就有了两个 cai_zhi(一个来自bed,一个来自sofa)

      

                    沙发床  有两个  cai_zhi 变量

    那么,就来了   我要是   沙发床.cai_zhi   就出现变量不明确的问题  因为,你不知道是  bed继承来的cai_zhi  还是  sofa 继承来的 cai_zhi

                           

        

    但是  加了  virtual  就不会有这个问题了, 我的  sofa_bed   的   cai_zhi  最终来自于 爷爷的 funiture

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        

  • 相关阅读:
    语言特性-上下文对象
    语言特性-闭包
    语言特性-变量作用域
    语言特性-函数重载与类型检查
    面向对象的JS代码
    单例模式
    wait操作接口
    进程的创建模型
    模拟密码登陆过程
    目录操作的一些函数理解
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8277297.html
Copyright © 2020-2023  润新知