C++继承和派生
2020-11-06 本文已影响0人
StevenHD
- C++通过
继承关系,实现了代码的可重用性。 -
public表示继承方式,也表示访问权限
一、继承方式和访问权限的影响
public的继承方式不影响子类中数据成员的访问权限
- 影响的方式有2种——
- 子类
如果是公有继承,那么在子类中,可以访问的就是父类的public还有protected数据成员。- 子类对象
如果是公有继承,那么在子类对象中,可以访问的就只有父类的public数据成员。
二、派生类的构造
之前我们有说,派生类的构造函数,需要显式地调用基类的构造器,像下面这样——
派生类的构造器需要显式地调用基类的构造器
但其实,如果父类中有标配(重载or默认),那么子类中是可以不用显式地调用父类的构造器的——
子类不用显式地调用父类的构造器1
子类不用显式地调用父类的构造器2
可以通过显式调用更改
父类的默认值——
更改父类构造器的默认值
但是,下面这样就需要显式地调用了——
子类需要显式地调用父类的构造器
问题解决——
子类显式地调用父类的构造器
三、构造顺序
-
如果有一个father,son,gradson,当我们构造gradson的时候,会先调用father的构造器,然后son的构造器,最后才是gradson的构造器——
构造顺序
如果构造器中出现了
参数不统一的问题,那么子类解决父类即可,父类解决父类的父类。
四、类中的子对象的初始化
4.1 初始化顺序——
父类初始化(所有父类都需要初始化结束)类对象初始化(Birthday类对象,A类对象)本类初始化
初始化顺序
public的继承方式不影响子类中数据成员的访问权限
更改父类构造器的默认值
初始化顺序