一、有子对象的派生类的构造
子对象:类的数据成员中包含的类的对象
派生类构造函数的任务
对基类数据成员的初始化
对子对象数据成员的初始化
对派生类数据成员的初始化
派生类构造函数的一般形式
派生类构造函数名(总参数表列):基类构造函数名(参数表列),
子对象名(参数表列)
{派生类中新增数据成员的初始化;}
二、有子对象的派生类的构造
派生类构造函数的执行顺序
调用基类构造函数,对基类数据成员初始化
调用子对象构造函数,对子对象数据成员初始化
执行构造函数本身,对派生类数据成员初始化
三、多层派生时的构造函数
派生类的构造函数只需写出其直接基类的构造函数
初始化顺序
先初始化基类Student的数据成员num和name
再初始化Student1的数据成员age
最后初始化Student2的数据成员score
四、派生类构造函数的特殊形式
当不需要对派生类的新增成员进行任何初始化操作时,派生类构造函数的函数体可以为空
如果在基类中没有定义构造函数,或定义了没有参数的构造函数,则在定义派生类构造函数时可以不写基类的构造函数
如果在基类和子对象类型的声明中都没有定义带参数的构造函数,而且也不需要对派生类自己的数据成员初始化,则可以不必显式地定义派生类构造函数
五、派生类构造函数的特殊形式
如果在基类或子对象类型的定义中都定义了带参数的构造函数,则必须显式地定义派生类的构造函数,并在派生类构造函数中写出基类或子对象的构造函数及其参数表
如果在基类中既定义了无参的构造函数,又定义了有参的构造函数,则在定义派生类的构造函数时,既可以包含基类构造函数及其参数,也可以不包含基类构造函数
六、派生类的析构函数
析构函数也不被继承,派生类自行声明
声明方法与一般(无继承关系时)类的析构函数相同
不需要显式地调用基类或子对象的析构函数,系统会自动隐式调用
析构函数的调用次序与构造函数相反
继承与派生(二)
最新推荐文章于 2024-02-02 16:02:04 发布