HM179 类外建档

HM179 类外建档

HM179 类外建档

来源: 第 179 集 模板-类模板成员函数类外实现

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

类模板的成员函数既可以写在类内,也可以只在类内留声明、到类外写实现。类外实现时,普通成员函数那种「类名 + ::」还不够,必须让编译器知道这是**类模板**的成员:

  1. 先写 template<class T1, class T2>,让编译器认识 T1T2
  2. 在类名后面加上模板参数列表,再写作用域分解:Person<T1, T2>::。可以记成「写在 :: 前面 / 写在类名后面」。
  3. 即使某个成员函数(例如 showPerson)的形参列表里没有用到 T1T2,只要它属于类模板,这两步仍然都要写。

构造函数同样如此。不要把类外实现写成普通类成员的样子。

请实现类模板 Person<T1, T2>:成员 mNamemAge;构造函数与 showPerson() 必须类外实现showPerson() 输出 姓名: 姓名 年龄: 年龄。

读入 \(n\) 个人,用 Person<string, int> 创建(必须显式指定类型),每人调用一次 showPerson(),最后输出年龄之和。

输入格式

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

接下来 \(n\) 行,每行一个不含空白的姓名和一个整数年龄。姓名长度 \(1\sim 20\),年龄为 \(1\sim 10^6\)。

输出格式

先输出 \(n\) 行档案,再输出一行整数表示年龄之和。

样例

输入 #1

2
Tom 20
Jerry 18

输出 #1

姓名:Tom 年龄:20
姓名:Jerry 年龄:18
38

输入 #2

1
Wukong 999

输出 #2

姓名:Wukong 年龄:999
999

说明

类外实现的完整形态类似:

template<class T1, class T2>

返回类型 Person<T1, T2>::函数名(...)

漏写尖括号里的 T1, T2,编译器会把它当成普通类的类外实现。

信息

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