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

 

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

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

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

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

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

    

原文地址:https://www.cnblogs.com/xiaoyoucai/p/8277297.html