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