多继承原理详解及实例分析

1、什么是多继承?

多继承是指派生类(子类)具有多个基类,而且派生类与每个基类之间的关系仍可看作是一个单继承。

举个例子理解一下:小明是一个学校的学生student,由于学习很好,所以在外边找了一个兼职—老师teacher,那么现在的小明就兼具两种身份:学生和老师。

本例中的基类就是teacher和student,子类就是小明TeacherStudent,这种情况就属于多继承。

2、多继承下派生类的定义格式

class <派生类名><继承方式1><基类名1><继承方式2><基类名2>,......

{

   <派生类类体>

};

其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。

用实例说话:

class A

{

};

class B

{

};

class C : public A, public B

{

};

派生类(子类)C具有两个基类(类A和类B),因此,类C就属于多继承的。而且C的成员包含了基类A,B中成员以及该类本身的成员。

 

3、多继承的情况下,派生类的构造函数格式如下:

<派生类名>(<总参数表>):<基类名1>(<参数表1>),<基类名2>(<参数表2>),…

   <子对象名>(<参数表n+1>),…

{

   <派生类构造函数体>

  其中,<总参数表>中各个参数包含了其后的各个分参数表,而且<总参数表>中的参数个数可能大于后面所有参数表中各参数个数的总和。

多继承下派生类的构造函数与单继承下派生类构造函数相似,它必须同时负责该派生类所有基类构造函数的调用。同时,派生类的参数个数必须包含完成所有基类初始化所需的参数个数。

 

派生类构造函数执行顺序是先执行所属基类的构造函数,再执行派生类本身构造函数,处于同一层次的各基类构造函数的执行顺序取决于定义派生类时所指定的各基类顺序,与派生类构造函数中所定义的成员初始化列表的各项顺序无关。也就是说,执行基类构造函数的顺序取决于定义派生类时基类的顺序。可见,派生类构造函数的成员初始化列表中各项顺序可以任意地排列。

代码下载地址:http://download.csdn.net/detail/duan19920101/9463993


在该程序中,作用域运算符::用于解决作用域冲突的问题。在派生类A中的print()函数的定义中,使用了B1::print;和B2::print();语句分别指明调用哪一个类中的print()函数,这种用法应该学会。

关于二义性的问题请参考:http://blog.csdn.net/peterwzc/article/details/2305359


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值