继承与派生(二)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值