小葵花课堂开课了。当你要像c++函数swap一样参数可以填入任意但相同的类型是该怎么办呢?
当然有些用c++11的人会说用auto啊!当然在c++11里是可以用auto但是auto是无法进行同一类型的为了同一类型c++有一种可以同一类型还可以自动推导的办法他就是:template模板就是他可以同一类型还可以自动推导的东东,现在然我们看看下面的实例吧
#inbclude<iostream>
using namespace std;
template<tymename/*这里可以改成class*/ T>//下面就用T这个类型
void prinf(T n){
cout<<n<<endl;
}
int main(){
int a;
cin>>a;
print(a);//自动推导类型:int
print<char>(a)//强制设置类型:char
return 0;
}
输入:48 |
输出:48 0(字符) |
一个函数可以用多个模板
#inbclude<iostream>
using namespace std;
template<tymename T1,typename T2>//下面就用T这个类型
void prinf(T1 n1,T2 n2){
cout<<n1<<" "<<n2<<endl;
}
int main(){
int a;
char b;
cin>>a>>b;
print(a,b);//自动推导类型:int,char
print<char,int>(a)//强制设置类型:char,int
return 0;
}
输入:48 3 |
输出:48 3 51 0 |
有模板的函数叫模板函数那么自然就有模板类
#include<iostream>
using namespe std;
template<typename T>
class au{
public:
a(T n){
x=n;
}
a(){
}
T x;
};
int main(){
au a(3);//正确,自动推导类型 int
au<double> b;//正确,强制类型 double
au c;//错误,没有强制类型也没有自动推导类型
return 0;
}