C++中,子类对象创建需要预先创建父类对象,对象销毁顺序与此相反。假如父类构造函数只存在有参构造,在子类对象实例化之前,便需要创建一个父类对象,在不存在默认无参构造情况下,系统时不知道怎么为你创建父类对象的。
解决上述问题的办法,就是在子类创建时指定父类初始化方式,需要在子类的有参构造中使用冒号“:”。用一个例子说明:
先看一般情况:父类和子类同时存在无参构造和有参构造函数。
输出信息如下,说明子类Son创建之前,先利用父类Father的无参构造创建了一个对象。
修改一下子类的有参构造函数:
输出信息如下,这说明子类Son创建之前,先利用父类Father的有参构造创建了一个父类对象。