小さなひまわりクラスが始まりました。C++ 関数スワップなど、同じ種類以外のパラメータを入力したい場合はどうすればよいでしょうか?
もちろん、C++11 を使用する人の中には auto! を使用するという人もいるでしょう。もちろん c++11 でも auto は使えますが、 auto では同じ型を実行することはできません 同じ型の C++ であれば同じ型で自動導出できる方法があります それは: template 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;
}