多继承
- 根据派生类继承基类的个数,将继承分为单继承和多继承。
- 多继承的定义格式如下:
class <派生类名>:<继承方式><基类名1>,…,<继承方式><基类名n>
{ <派生类新定义的成员> } - 多继承构造函数的定义格式:
class <派生类名>(<总参数表>):<基类名1>(<参数表1>),…,<基类名n>(<参数表n>)
{ 派生类数据成员的初始化 } - 关于多继承的构造函数和析构函数的调用顺序与派生类相同,但因为有多个基类,调用基类构造函数的顺序取决于定义派生类时所指定的基类的顺序,与派生类构造函数中所定义的成员初始化列表顺序无关。
#include <iostream>
using namespace std;
//多继承示例
class Base1{
private:
int b1;
public:
Base1(int i)
{
b1=i;
cout<<"Construct Base1"<<endl;
}
void print()
{
cout<<"b1="<<b1<<endl;
}
~Base1()
{
cout<<"Destruct Base1"<<endl;
}
};
class Base2{
private:
int b2;
public:
Base2(int i)
{
b2=i;
cout<<"Construct Base2"<<endl;
}
void print()
{
cout<<"b2="<<b2<<endl;
}
~Base2()
{
cout<<"Destruct Base2"<<endl;
}
};
class Derive:public Base1,public Base2{ //多继承
private:
int c;
public:
Derive(int i1,int i2,int c1):Base1(i1),Base2(i2)
{
c=c1;
cout<<"Construct Derive"<<endl;
}
void print()
{
Base1::print();
Base2::print();
cout<<"c1="<<c<<endl;
}
~Derive()
{
cout<<"Destruct Derive"<<endl;
}
};
int main()
{
Derive objectOne(2,4,6);
objectOne.print();
return 0;
}
运行结果: