|
一個(gè)模板中可以具有多個(gè)參數(shù),即可以在一個(gè)模板中聲明多個(gè)自定義的類型,如下面這句話:
template<class T1,class T2>
|
而我們就可以利用這兩個(gè)參數(shù)聲明一個(gè)具有2種類型的成員。下面我用一個(gè)程序說下演示一下這個(gè)問題:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream>
#include <string>
using namespace std;
template<class T1,class T2>
class show
{
public:
void show1(T1 &a){cout<<"show1:"<<a<<endl;}
void show2(T2 &a){cout<<"show2:"<<a<<endl;}
};
int main()
{
show<int,string> a;
int temp1=5;
string temp2="Hello,C++!";
a.show1(temp1);
a.show2(temp2);
return 0;
}
|
在上面的程序中,我在主函數(shù)中將兩個(gè)類型T1和T2分別設(shè)置成了int型和string類型。這樣一來(lái),我們?cè)诔绦虻牡?5行和16行定義的整型變量和string型變量就可以在17行和18行被輸出,結(jié)果如下:

另外一個(gè)需要注意的問題,我們也可以為模板參數(shù)提供默認(rèn)的類型,比如說:
template<class T1,class T2=string>
|
這樣一來(lái),我們就把T2參數(shù)默認(rèn)設(shè)置成了string類型。那么在上面主程序中,我們把14行換成:
這樣還是相當(dāng)于:
整個(gè)程序示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream>
#include <string>
using namespace std;
template<class T1,class T2=string>
class show
{
public:
void show1(T1 &a){cout<<"show1:"<<a<<endl;}
void show2(T2 &a){cout<<"show2:"<<a<<endl;}
};
int main()
{
show<int> a;
int temp1=5;
string temp2="Hello,C++!";
a.show1(temp1);
a.show2(temp2);
return 0;
}
|
輸出與上面一模一樣,這里我就不把它粘上來(lái)了,^_^
|