文档介绍:多重继承的设计
下面主要讨论多重继承的两种方法,即直接继承多基类和多层次继承的问题。
多层继承方法
多层次继承关系指任何一层派生类都可成为基下一层继承的基类。此时,原始基类可以称为第二个派生类的间接基类。其概念图是一个树型结构,。
多层继承的方法是所有派生类都只需对其上一层基类负责。用户只要知道哪些是可继承的内容即可。
这种继承性有两方面的用途:一是抽象机制,把类组织成层次说明的工具;二是软件重用机制,把类继承作为软件代码重用和功能扩展的工具。
[] Multiple Inheritance using a class hierarchy()。
直接继承多个基类的方法
所谓多基类继承是指一个派生类直接继承多个基类。此时两个或多个基类联合产生一个派生类,这被称为多继承。其概念图是一个类格结构,。
定义格式如下:
class derived_name:access base_class1,access base_class2,…
{
……//成员列表
};
ess是访问限定词,各个基类可以不同;bass_class1到n都是基类名。构造函数的执行顺序按从左到右的顺序,析构函数则相反。
在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则相同。
[] 。
多继承的构造函数与析构函数
多继承的构造函数的定义与单继承类似,只是几个构造函数之间用“,”分隔。在参数个数的设计上必须考虑完成多个基类初始化所需的参数数目。
[] 建立一个带有滚动条的窗口类。
class window
{
……
public:
window(int top,int left,int bottom,int right);
~window();
};
class scrollbar
{
……
public:
scrollbar(int top,int left,int bottom,int right);
~scrollbar();
};
class scrollbarwind:window,scrollbar
{
……
public:
scrollbarwind(int top,int left,int bottom,int right);
~scrollbarwind();
};
scrollbarwind::scrollbarwind(int top,int left,int bottom,int right):window(top,left,bottom,
right),scrollbar(top,right-20,bottom,right)
{
……
}
[] 多重继承的构造函数与析构函数的说明(包括对象成员)。
继承成员二义性与虚基类方法
当一个基类被一个派生类间接继承多次时,或者说在多条继承链路有公共的基类,那么该基类就会存在多个备份,系统无法分辩对基类成员的引用是通过哪个派生类继承来的。于是编译器对于这种不确定性问题发出错误信息。
[] 二义性问题。