1、派生类的声明方式:
(1) 一般形式:class 派生类名:[继承方式]基类名
{派生类新增加的成员};
(2)继承方式包括: public (公用的),private (私有的)和protected(受保护的),此项
是可选的,如果不写此项,则默认为private(私有的)
1>公用继承(public inheritance)
基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍
为基类私有。
2>私有继承(private inheritance)
基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。
3>受保护的继承(protected inheritance)
基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基
类私有
2、派生类的构造函数和析构函数
(1) 简单的派生类的构造函数
一般形式:派生类构造函数名(总参数表列):基类构造函数名(参数表列)
{派生类中新增数据成员初始化语句}
如:①Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s)
//派生类构造函数
//在函数体中只对派生类新增的数据成员初始化
{
age=a;
addr=ad;
}
②Student1(int n, string nam,char s,int a, stringad)
:Student(n,nam,s),age(a),addr(ad){}
(2) 有子对象的派生类的构造函数
一般形式:
派生类构造函数名(总参数表列):基类构造函数名(参数表列),子对象名(参数表列){派生类中新增数成员据成员初始化语句}
(3) 多层派生时的构造函数
只需列出其上一层派生类的构造函数
(4) 多重继承派生类的构造函数
一般形式:
派生类构造函数名(总参数表列):基类1构造函数(参数表列),基类2构造函数(参数表列),基类3构造函数(参数表列)
{派生类中新增数成员据成员初始化语句}
3、虚基类(利用虚基类解决多重继承引起的二义性问题)
(1) 一般形式:class 派生类名: virtual 继承方式基类名
(2) 初始化:如:
class A//定义基类A
{A(int i){ }}; //基类构造函数,有一个参数};
class B :virtual public A //A作为B的虚基类
{B(int n):A(n){ }}; //B类构造函数,在初始化表中对虚基类初始化};
class C :virtual public A //A作为C的虚基类
{C(int n):A(n){ }}; //C类构造函数,在初始化表中对虚基类初始化};
class D :public B,public C
{D(int n):A(n),B(n),C(n){ }}; //类D的构造函数,在初始化表中对所有基类初始化