HM130 继承构造析构序
HM130 继承构造析构序
来源: 第 130 集 类和对象-继承-构造和析构顺序
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
派生类会拿到基类里那些可以继承的数据。要拿到这些数据,创建派生类对象时**也会先造出基类子对象**。因此需要搞清两件事:
- 只创建基类对象时,只会走基类的构造和析构。
- 创建派生类对象时:先调用基类构造函数,再调用派生类构造函数;析构顺序与构造相反——先析构派生类,再析构基类。
可以记成:先有父亲,再有儿子;离开时先走儿子,再走父亲。
请定义基类 Base 与公有继承它的派生类 Son。两类都要在构造、析构时打印固定提示。在同一个函数作用域里按输入顺序依次创建若干对象(都建在栈上)。该作用域结束时,已创建对象按与构造相反的顺序自动销毁。
输入格式
第一行一个整数 \(n\)(\(1 \le n \le 100\)),表示要创建的对象个数。
接下来 \(n\) 行,每行一个单词:
Base:创建一个基类对象Son:创建一个派生类对象
输出格式
每发生一次构造或析构,单独输出一行:
- 基类构造:
Base Construct - 基类析构:
Base Destruct - 派生类构造:
Son Construct - 派生类析构:
Son Destruct
先按创建顺序输出全部构造,再按相反顺序输出全部析构。行末换行。
样例
输入 #1
1
Son
输出 #1
Base Construct
Son Construct
Son Destruct
Base Destruct
输入 #2
2
Base
Son
输出 #2
Base Construct
Base Construct
Son Construct
Son Destruct
Base Destruct
Base Destruct
说明
- 样例 #1:只建派生类对象,仍然会先构造基类子对象;析构则先
Son后Base。 - 样例 #2:两个对象同处一个作用域。先建的
Base后销毁,后建的Son先销毁;Son内部仍遵守“先构基类、后构自身”。 - 不要只打印固定几行,必须用类的构造函数和析构函数产生输出。
信息
- ID
- 1129
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者