HM177 三种传参窗

HM177 三种传参窗

HM177 三种传参窗

来源: 第 177 集 模板-类模板对象做函数参数

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

类模板可以实例化出对象,这个对象也能当作函数参数。常见有三种写法:

  1. 指定传入类型:参数写成 Person<string, int> &p,把模板参数列表写死。最常用,直截了当。
  2. 参数模板化:把 stringint 再变成 T1T2,函数本身是函数模板:template<class T1, class T2> void f(Person<T1, T2> &p)。这是类模板配合函数模板。
  3. 整个类模板化:参数写成一个 T,由编译器把整个 Person<string, int> 推导成 Ttemplate<class T> void f(T &p)

三种都要会;实际开发里用得最多的是第一种。可以用 typeid(T).name() 查看推导出的类型名,但类型名字符串依赖编译器,本题不要求输出它。

请实现类模板 Person<T1, T2>(成员姓名、年龄,有参构造,showPerson() 输出 姓名: 姓名 年龄: 年龄),以及三个打印函数 printPerson1printPerson2printPerson3,分别对应上述三种传参。每个函数先输出一行通道号 way:k,再调用 showPerson()

读入 \(n\) 个人,每人指定通道 \(k\in\{1,2,3\}\),按通道调用对应函数。必须真正写出三种函数,不能只用一种应付。

输入格式

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

接下来 \(n\) 行,每行:整数 \(k\)、不含空白的姓名 \(s\)、整数年龄 \(a\)。\(k \in \{1,2,3\}\),姓名长度 \(1\sim 20\),\(1 \le a \le 10^6\)。

输出格式

每人两行:第一行 way: 与通道号(无空格),第二行 姓名: 姓名 年龄: 年龄。

样例

输入 #1

3
1 Wukong 100
2 Bajie 90
3 Seng 30

输出 #1

way:1
姓名:Wukong 年龄:100
way:2
姓名:Bajie 年龄:90
way:3
姓名:Seng 年龄:30

输入 #2

1
1 Tom 20

输出 #2

way:1
姓名:Tom 年龄:20

说明

创建对象必须写成 Person<string, int> p(...),类模板没有自动类型推导。第一种传参最常用;第二、三种都是函数模板配合类模板,一般不必写得这么绕,但本题都要会。

信息

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