作用:通过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;//输出15string 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类型,6cout << mysum(b, a) << endl;//返回b数据类型float,6.1
}