模板函数
前言
模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。
要求用c++实现一个功能支持int和double的相加操作并返回代码如下。
int sum(int i, int j) { return i + j; } double sum(double i, double j) { return i + j; } void main() { int i = 5, j = 10; cout << "(int a+b)" << sum(i, j) << endl; double x = 21.05, y = 20.006; cout << "(double a+b)" << sum(x, y) << endl; }
输出:
(int a+b)15
(double a+b)41.056
若还需对更多的类型数据进行此操作便会产生大量重复性功能的函数,使用模板函数即可完美解决。
template <typename T> T sum(T i,T j) { return i + j; } void main() { int i = 5, j = 10; cout << "(int a+b)" << sum(i, j) << endl; double x = 21.05, y = 20.006; //数据类型自动推导 cout << "(double a+b)" << sum(x, y) << endl; //显示类型调用 cout << "(double a+b)" << sum<double>(x, y) << endl; }
输出:
(int a+b)15
(double a+b)41.056
(double a+b)41.056
模板说明
template<类型形参>
类型形参:
typename T1,typename T2......typename Tn或class T1,class T2......class Tn。
注:typename与class效果相同。
函数定义:
类型 函数名(形参)
{
}
函数模板调用:
sum<int>(a, b); //显式类型调用
sum(a, b); //自动数据类型推导