HM112 先有零件再有整机

HM112 先有零件再有整机

HM112 先有零件再有整机

来源: 第 112 集 类和对象-对象特性-类对象作为类成员

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

一个类的成员可以是另一个类的对象,这样的成员叫**对象成员**。例如人员 Person 里有姓名字符串,还有一部 Phone。创建人员时,必须先把这部手机构造出来,再构造人员自身;析构顺序与构造相反——先拆人员,再拆手机。

Phone 只有品牌名 mPName。它的有参构造接收一个字符串,记到品牌上。

Person 的构造必须用**初始化列表**:形参列表右括号后写冒号,: mName(name), mPhone(pName)。其中 mPhone(pName) 相当于用字符串去构造手机,也就是隐式转换法。不要在函数体里再给这两个成员做一遍赋值冒充初始化列表。

读入 \(n\) 个人。每创建一个人,立刻在该人的生存期结束时析构,因此每个人的构造、自报家门、析构是一段连续输出,不会和别人交错。

输入格式

第一行一个整数 \(n\)(\(1 \le n \le 1000\))。

接下来 \(n\) 行,每行两个不含空白的字符串 \(name\)、\(brand\)(长度均为 \(1\sim 20\)),表示姓名和手机品牌。

输出格式

对每个人依次输出五行,行末换行:

构造 Phone
构造 Person
name 拿着 brand
析构 Person
析构 Phone

其中 namebrand 为输入中的姓名和品牌,中间用「拿着」两侧各一个空格连接。

样例

输入 #1

2
张三 苹果Max
李四 华为

输出 #1

构造 Phone
构造 Person
张三 拿着 苹果Max
析构 Person
析构 Phone
构造 Phone
构造 Person
李四 拿着 华为
析构 Person
析构 Phone

输入 #2

1
Wang Xiaomi

输出 #2

构造 Phone
构造 Person
Wang 拿着 Xiaomi
析构 Person
析构 Phone

说明

  • 构造时先对象成员、后自身;析构与构造相反。
  • 初始化列表可以把字符串直接交给对象成员,对应隐式转换法。
  • 「拿着」两侧各一个空格,品牌名必须来自 Phone 对象成员,不能只在 main 里拼接输入。

信息

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