C++ テンプレートのチュートリアル

小さなひまわりクラスが始まりました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;
} 

おすすめ

転載: blog.csdn.net/m0_68045532/article/details/129072017