示例代码:
#include using namespace std;/*
int add(int x, int y)
{return x + y;
}double add(double x, double y)
{return x + y;
}*/template //声明虚拟类型T(作用域只局限于下面紧跟的一个函数)
T add(T x, T y)
{return x + y;
}template
void show(T x)
{cout << x << endl;
}template
void print(T1 x, T2 y)
{cout << x << y << endl;
}int main()
{cout << add(1, 2) << endl; //隐式调用(自动数据类型推导)cout << add(1.11, 2.22) << endl;cout << add(1, 'a') << endl; //显示调用(指定转换为int类型)cout << add(1, 'a') << endl; //显示调用(指定转换为char类型)print(1, 'a');print(1.11, 'a');show(1);return 0;
}
运行结果:
注意:普通函数和模板函数同时存在,优先调用普通函数
示例代码:
#include using namespace std;int add(int x, int y)
{cout << "普通函数" << endl;return x + y;
}template
T add(T x, T y)
{cout << "模板函数" << endl;return x + y;
}template
void show(T x, T y)
{cout << x << y << endl;
}int main()
{cout << add(1, 'a') << endl; //普通函数可以进行默认类型转换show(1, 'a'); //模板函数没有默认的类型转换add(1, 2); //普通函数和模板函数同时存在,优先调用普通函数return 0;
}
运行结果: