类之间的关系
继承:在已有类的基础上创建新类的过程
一个B类继承A类,或称从类A派生类B,类A称为基类(父类),类B成为派生类(子类)
基类派生类
类继承关系的语法形式
class 派生类名:基类名表
{
数据成员和成员函数声明
};
基类名表 构成
访问控制 基类名1,访问控制 基类名2,·····,访问控制 基类名n
不论何种方式继承基类,派生类都不能直接使用基类的私有成员
派生类的生成过程
1.吸收基类成员(全部吸收(构造、析构除外),但不应定可见)
2.改造基类成员
3.添加派生类新成员
重名函数
1.派生类定义了与基类同名的成员,在派生类中访问同名成员是屏蔽(hide)了基类的同名成员
2.在派生类中使用基类的同名成员,显示的使用类名限定符: 类名::成员
派生类中访问静态成员
1.基类定义的静态成员,将被所有派生类共享(基类和派生类共享基类中的静态成员)
2.根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问特性
3.派生类中访问静态成员,用以下形式显式调用说明:
类名::成员
或通过对象访问 对象名.成员
基类的初始化
1.在创建派生类对象时用指定参数调用基类的构造函数来初始化派生类继承基类的数据
2.派生类构造函数声明为
派生类构造函数(变元表):基类(变元表),对象成员1(变元表)·····对象成员n(变元表)
3.构造函数执行顺序:基类→对象成员→派生类
1.派生类构造函数和析构函数不能被继承
2.如果基类没有定义构造函数或有无参的构造函数,派生类也可以不用定义构造函数
3.如果基类无无参的构造函数,派生类必须定义构造函数
4.如果派生类的基类也是派生类,则每个派生类只负责直接基类的构造
5.派生类是否定义析构函数与所属的基类无关
派生类析构函数的定义
在C++中,派生类的构造函数的一般格式为:
派生类::派生类名(参数总表):基类名(参数表)
{
//派生类新增成员的初始化语句
}
注意:这是基类有构造函数且含有参数时使用
多继承
1.一个类有多个直接基类的继承关系称为多继承
2.多继承声明语法
class 派生类名:访问控制 基类名1,访问控制 基类名2,·····,访问控制 基类名n
{
数据成员和成员函数声明
};
多继承的构造函数
派生类名(参数总表):基类名1(参数表1),基类名2(参数表2),····基类名n(参数表n)
{
//派生类新增成员的初始化语句
}