继承与派生(第三天)

标题标题继承与派生(第三天)

1.继承:新的类(派生类)从已有类(基类)那里得到已有的特性,继承了各种成员的关系,根据派生类所拥有的基类数目不同,分为单继承和多继承.基类与派生类的关系如下:
(1)基类是对派生类的抽象,派生类是对基类的具体化。
(2)派生类是基类的组合;
(3)公有派生类的对象可以作为基类的对象处理。
2.派生类的定义格式:
class<派生类名>:<继承方式1><基类名1>,
<继承方式2><基类名2>,
…,
<继承方式n><基类名n>,
{
<派生类新定义成员>
}
继承方式有三种:公有继承(public);私有继承(private);保护继承(protected)
3.派生类对基类成员的访问

公有继承	私有继承	保护继承

私有成员 × × ×
公有成员 √ √(私) √(保)
保护成员 √ √(私) √
4.派生类的构造函数
一半格式为:<派生类名>::<派生类名>(总参数表):<基类名1>(参数表1),
<基类名2>(参数表2),
…,
<基类名n>(参数表n)
{
<派生类构造函数体>
}
执行顺序如下:
(1)调用基类的构造函数对基类的数据成员进行初始化,调用顺序按照各个基类被继承时声明的顺序(自左向右);
(2)对新增成员进行初始化,执行顺序按照各个成员在类中声明的顺序(自上而下);
(3)执行派生类的构造函数体。
注意:执行顺序析构函数与构造函数完全相反。
5.二义性的解决:
(1)通过作用域运算符(::)明确指出访问的基类,一般格式为:
<对象名>.<基类名>::<成员名> //数据成员
<对象名>.<基类名>::<成员名> //成员函数
(2)在类中定义同名成员。
例如:class derived
{
Public:
Void fun() {Base1::fun();}
//或者 Base1::fun()
};
6.虚基类
(1)定义:当一个派生类从多个基类派生,而这些基类又有一个共同的基类,当对该基类进行访问时,可能出现二义性,所以提出来虚基类;
格式:class<类名>:virtual<继承方式><基类名>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章