继承
重要规则:
子类就是一个特殊的父类
子类对象可以直接初始化父类对象
子类对象可以直接赋值给父类对象
继承中的访问级别
面向对象中的访问级别不只是public和private
可以定义protected访问级别
关键字protected的意义
修饰的成员不能被外界直接访问
修饰的成员可以被子类直接访问
不同的继承方式
c++中支持三种不同的继承方式
public继承
父类成员在子类中保持原有访问级别
private继承
父类成员在子类中变为私有成员
protected继承
父类中的公有成员变为保护成员,其它成员保持不变
子类构造对象
子类中可以定义构造函数
子类构造函数
必须对继承而来的成员进行初始化
直接通过初始化列表或者赋值的方式进行初始化
调用父类构造函数进行初始化
子类对象的构造
父类构造函数在子类中的调用方式
默认调用
适用于无参构造函数和使用默认参数的构造函数
显示调用
通过初始化列表调用
适用于所有父类构造函数
构造规则
子类对象在创建时会首先调用父类的构造函数
先执行父类构造函数再执行子类的构造函数
父类构造函数可以被隐式调用或者显示调用
对象创建时构造函数的调用顺序
1.调用父类的构造函数
2.调用成员变量的构造函数
3.调用类自身的构造函数
析构函数的调用顺序与构造函数相反
1.执行自身的析构函数
2.执行成员变量的析构函数
3.执行父类的析构函数