您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-17 11:56 381 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 多继承