派生类的构造函数与析构函数

派生类需要自定义构造函数和析构函数,因为它们不能从基类继承。构造函数调用基类构造函数以初始化基类数据成员。派生类构造函数分为三部分:基类成员初始化、子对象初始化、派生类新增成员初始化。执行顺序是先基类构造,再子对象构造,最后派生类自身构造。析构函数则按照相反顺序执行,确保所有成员正确清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在声明派生类时,一般还应当自己定义派生类的构造函数和析构函数,因为构造函数和析构函数是不能从基类继承的。希望在执行派生类的构造函数时,使派生类的数据成

员和基类的数据成员同时都被初始化。解决这个问题的思路是: 在执行派生类的构造函数时,调用基类的构造函数。

无子对象时的形式:

派生类构造函数名(总参数表列):基类构造函数名(参数表列){派生类中新增数据成员初始化语句}


请注意: 在类中对派生类构造函数作声明时,不包括基类构造函数名及其参数表列(即Student(n,nam,s))。只在定义函数时才将它列出。

也可以这样Student1(int n, string nam,char s,int a, string ad):Student(n,nam,s),age(a),addr(ad){}这样函数体为空,更显得简单和方便。

 

派生类构造函数的任务应该包括3个部分:

(1) 对基类数据成员初始化;

(2) 对子对象数据成员初始化;

(3) 对派生类数据成员初始化。

归纳起来,定义派生类构造函数的一般形式为

派生类构造函数名(总参数表列):基类构造函数名(参数表列),子对象名(参数表列){派生类中新增数成员据成员初始化语句}

 

执行派生类构造函数的顺序是:

1、 调用基类构造函数,对基类数据成员初始化;

2、 调用子对象构造函数,对子对象数据成员初始化;

3、 再执行派生类构造函数本身,对派生类数据成员初始化。

当不需要对派生类新增的成员进行任何初始化操作时,派生类构造函数的函数体可以为空,即构造函数是空函数。

 

在派生类中可以根据需要定义自己的析构函数,用来对派生类中所增加的成员进行清理工作。基类的清理工作仍然由基类的析构函数负责。在执行派生类的析构函数时,系

统会自动调用基类的析构函数和子对象的析构函数,对基类和子对象进行清理。调用的顺序与构造函数正好相反: 先执行派生类自己的析构函数,对派生类新增加的成员进行

清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。

 

多层派生时类推。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值