目录
一、多重继承或多继承
由多个基类共同派生出新的类,这样的继承结构被称为多重继承或多继承。举个例子:
#include<iostream>
using namespace std;
class fuelEngine //燃油引擎
{
private:
int cylindenum;//汽缸数
public:
fuelEngine(int c = 4):cylindenum(c){}
~fuelEngine(){}
void start(){}
};
class electricEngine//电动引擎
{
private:
float power;
public:
electricEngine(float p=60):power(p){}
~electricEngine(){}
void Start(){}
};
class Hybirdcar:public fuelEngine,public electricEngine//混动汽车
{
public:
Hybirdcar(int c,int p):fuelEngine(c),electricEngine(p){}
~Hybirdcar(){}
};
混动汽车类是由电动引擎类和燃油引擎类共同派生出来的派生类,这种继承结构就为多继承。
二、菱形继承(二义性和数据冗余问题)
在多继承结构中,存在着很多问题,比如从不同基类中继承了同名成员,派生类中也定义了同名成员,这种二义性问题很好解决,加上要访问的基类的类名限制就可以了,例:
#include<iostream>
using namespace std;
class Base1
{
public:
int var;
void fun()
{
cout<<"Member of Base1"<<endl;
}
};
class Base2
{
public:
int var;
void fun()
{
cout<<"Member of Base2"<<endl;
}
};
class Derived:public Base1,public Base2