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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~