作用:通过template定义函数、类可以扩展对不同数据类型通用性。
如下函数就只能接收int类型数据输入,并返回int类型,想处理string类型或者其他类型只能重新定义一个函数。
- //不使用模板相加函数,只能对int输入有效返回int
- int mysum(int a, int b)
- {
- return a + b;
- }
-
- int main() {
- int a = 5, b = 10;
- cout << mysum(a, b);
- string s1 = "hello", s2 = "world";
- cout << mysum(s1, s2) << endl;//报错无法执行,输入不是int类型
- }
使用template进行定义,可以同时适用于多种数据类型
- //使用模板定义相加函数,可以同时处理多种数据格式,T代表数据类型
- template<typename T>
- T mysum(T a, T b)
- {
- return a + b;
- }
-
- int main() {
- int a = 5, b = 10;
- cout << mysum(a, b) << endl;//输出15
- string s1 = "hello", s2 = " world";
- cout << mysum(s1, s2) << endl;//输出hello world
- }
有多个模板参数是,增加typename个数就行了
- //使用模板定义相加函数,可以同时处理多种数据格式,T代表数据类型
- template<typename T,typename M>
- T mysum(T a, M b)
- {
- return a + b;//无论加什么类型强制返回第一个参数T类型
- }
-
- int main() {
- int a = 5;
- float b = 1.1;
- cout << mysum(a, b) << endl;//返回a数据类型int类型,6
- cout << mysum(b, a) << endl;//返回b数据类型float,6.1
- }