HM130 继承构造析构序

HM130 继承构造析构序

HM130 继承构造析构序

来源: 第 130 集 类和对象-继承-构造和析构顺序

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

派生类会拿到基类里那些可以继承的数据。要拿到这些数据,创建派生类对象时**也会先造出基类子对象**。因此需要搞清两件事:

  1. 只创建基类对象时,只会走基类的构造和析构。
  2. 创建派生类对象时:先调用基类构造函数,再调用派生类构造函数;析构顺序与构造相反——先析构派生类,再析构基类。

可以记成:先有父亲,再有儿子;离开时先走儿子,再走父亲。

请定义基类 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:只建派生类对象,仍然会先构造基类子对象;析构则先 SonBase
  • 样例 #2:两个对象同处一个作用域。先建的 Base 后销毁,后建的 Son 先销毁;Son 内部仍遵守“先构基类、后构自身”。
  • 不要只打印固定几行,必须用类的构造函数和析构函数产生输出。

信息

ID
1129
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者