一個模板中可以具有多個參數(shù),,即可以在一個模板中聲明多個自定義的類型,,如下面這句話:
template < class T1, class T2>
|
而我們就可以利用這兩個參數(shù)聲明一個具有2種類型的成員,。下面我用一個程序說下演示一下這個問題:
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ù)中將兩個類型T1和T2分別設(shè)置成了int型和string類型,。這樣一來,,我們在程序的第15行和16行定義的整型變量和string型變量就可以在17行和18行被輸出,,結(jié)果如下:
另外一個需要注意的問題,我們也可以為模板參數(shù)提供默認(rèn)的類型,,比如說:
template < class T1, class T2=string>
|
這樣一來,,我們就把T2參數(shù)默認(rèn)設(shè)置成了string類型。那么在上面主程序中,,我們把14行換成:
這樣還是相當(dāng)于:
整個程序示例如下:
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;
}
|
輸出與上面一模一樣,,這里我就不把它粘上來了,^_^
|