类与类之间可以通过继承,来继承父类的所有成员与函数(但有权限限制)。
下列特殊函数除外:
基类的构造函数、析构函数和拷贝构造函数。
基类的重载运算符。
基类的友元函数。
格式:
class 派生类:访问操作符 基类名,访问操作符 基类.....{
//代码区
}
访问操作符:
public:父类成员在子类保持原有访问级别
private:父类成员在子类变为private成员
protected:父类中 public 变成 protected,其他不变。
继承中的构造与析构:
子类在构造时 会先调用 父类的构造函数 -》 子类的构造函数
子类在析构时 会先调用 子类的析构函数 -》 父类的析构函数
如果父类的构造函数是有参构造函数,那么得用:操作符去赋值:
子类构造函数():父类构造函数(参数列表){
}
如果派生类中定义了与基类同名成员,那么访问派生类同名成员时会屏蔽基类同名成员。
如果要在派生类中使用同名基类成员可以:
派生类对象.基类::同名成员
基类定义的静态函数会被派生类所共享,因为静态成员属于类,在使用前一定要初始化并分配内存空间(赋值)
派生类访问静态成员:
①类名::成员
②对象名.成员
多继承的二义性:
如果一个派生类继承了两个基类,而两个基类各有一个同名的成员。
如果派生类调用该成员就会出错。所以不建议派生类继承多个基类。
赋值兼容性原则:
① 派生类对象可以赋值给基类对象
② 派生类对象可以初始化基类的引用
③ 指向基类的指针也可以指向派生类
C++编译器在执行一个对象时,是根据对象的类型来执行对象对应类的函数。那么一个基类的指针指向派生类的对象时,则调用时会调用基类的函数。