HM111 属性初值表
HM111 属性初值表
来源: 第 111 集 类和对象-对象特性-初始化列表
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
构造函数本来就可以给成员赋初值:在函数体里写 mA = a; 一类赋值。C++ 还提供另一种写法——**初始化列表**:写完构造函数的形参列表、右括号之后,先写一个冒号 :,再依次写 成员名(初值),多个成员用逗号隔开,最后才是函数体 { ... }。函数体里可以什么都不写,也可以继续写别的语句。
请实现类型 Person,它有三个整型成员 mA、mB、mC,并提供两种构造:
- 无参构造:初始化列表里把三个成员**写死**为 \(10\)、\(20\)、\(30\),即
: mA(10), mB(20), mC(30),函数体为空。这样创建对象时三个属性永远是这组固定值。 - 有参构造:形参为三个整数 \(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
- 通过率
- ?
- 上传者