#include<iostream>
using namespace std;
//函数模板(模板定义以关键字template开始,后接尖括号括住的模板形参表,形参前用class或者typename关键字修饰)
template<class T1, typename T2>
inline T1 add(T1 x, T2 y)//函数模板也可以声明为inline
{
return x+y;
}
//函数模板全特化
template<>
int add<int, char>(int x, char y)
{
return x + y;
}
void main()
{
//使用函数模板时,并不需要显示指定形参类型,编译器会将模板实参绑定到模板形参。编译器将确定用什么类型代替每个类型形参,用什么值代替每个非类型形参,然后产生并编译(称为实例化)该版本的函数。
cout << add(10, 20) << endl;
cout << add<double, double>(10.5, 20.3) << endl;
cout << add(10, 'W') << endl;
//模板不匹配会报错
//cout<<add(10.5, 20, 10)<<endl;
}
函数模版之全特化
最新推荐文章于 2024-08-25 15:12:08 发布