多继承的定义与使用

多继承
  • 根据派生类继承基类的个数,将继承分为单继承和多继承。
  • 多继承的定义格式如下
    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;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值