多继承与虚继承
多继承
俗话讲的,鱼与熊掌不可兼得,而在计算机就可以实现,生成一种新的对象,
叫熊掌鱼,多继承自鱼和熊掌即可。还比如生活中,“兼”。

一个类有多个直接基类的继承关系称为多继承

沙发床实现

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #define _CRT_SECURE_NO_WARNINGS #include <iostream>
using namespace std;
class Furniture { public: int m; };
class Bed: virtual public Furniture { public: void sleep() { cout << "在床上睡觉" << endl; } };
class Sofa :virtual public Furniture { public: void sit() { cout << "在沙发上睡觉" << endl; } };
class SofaBed :public Bed, public Sofa { public: void sitAndSleep() { sit(); sleep(); } };
int main(void) { Bed b; b.sleep();
cout << " ---- " << endl;
Sofa s; s.m = 100; s.sit(); cout << "------- " << endl;
SofaBed sb; sb.sitAndSleep();
sb.m;
return 0; }
|
虚继承
如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则
在对该基类中声明的名字进行访问时,可能产生二义性




