HM111 属性初值表

HM111 属性初值表

HM111 属性初值表

来源: 第 111 集 类和对象-对象特性-初始化列表

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

构造函数本来就可以给成员赋初值:在函数体里写 mA = a; 一类赋值。C++ 还提供另一种写法——**初始化列表**:写完构造函数的形参列表、右括号之后,先写一个冒号 :,再依次写 成员名(初值),多个成员用逗号隔开,最后才是函数体 { ... }。函数体里可以什么都不写,也可以继续写别的语句。

请实现类型 Person,它有三个整型成员 mAmBmC,并提供两种构造:

  1. 无参构造:初始化列表里把三个成员**写死**为 \(10\)、\(20\)、\(30\),即 : mA(10), mB(20), mC(30),函数体为空。这样创建对象时三个属性永远是这组固定值。
  2. 有参构造:形参为三个整数 \(a,b,c\),初始化列表写成 : mA(a), mB(b), mC(c),把形参灵活传给成员(不要写死)。函数体里再把三个形参相加,存进成员 mSum

读入若干次创建请求。无参请求必须得到 \(10\ 20\ 30\);有参请求必须得到传入的三个数以及它们的和。和必须在有参构造的函数体里算出,不能只在 main 里临时相加冒充。

输入格式

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

接下来 \(q\) 行,每行先一个整数 \(t\):

  • \(t=0\):创建无参对象,该行没有后续数字。
  • \(t=1\):后面再跟三个整数 \(a,b,c\)(\(|a|,|b|,|c| \le 10^4\)),创建有参对象。

输出格式

对每个请求输出一行,数字之间用单个空格分隔,行末换行:

  • \(t=0\):输出 10 20 30
  • \(t=1\):输出 \(a\)、\(b\)、\(c\) 以及 \(a+b+c\)

样例

输入 #1

3
0
1 10 20 30
1 30 20 10

输出 #1

10 20 30
10 20 30 60
30 20 10 60

输入 #2

2
1 0 0 0
0

输出 #2

0 0 0 0
10 20 30

说明

  • 冒号必须写在形参列表的右括号之后、函数体之前。
  • 无参构造把 \(10,20,30\) 写在初始化列表里,因此不传参也能得到这组值。
  • 有参构造用形参给成员赋初值,同一组构造可以创建不同的 \(a,b,c\)。
  • 样例 #1 第二行与第一行前三个数相同,但第二行多输出和 \(60\);第三行把三个数反过来传入,成员也随之变成 \(30,20,10\)。

信息

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