1. 程式人生 > 其它 >C++ with 模板*黑馬程式設計師

C++ with 模板*黑馬程式設計師

1.2函式模板

1.2.2函式模板基本語法

 1 #include<iostream>
 2 using namespace std;
 3 //函式模板
 4 
 5 //兩個整型交換函式
 6 void swapInt(int& a, int& b)
 7 {
 8     int temp = a;
 9     a = b;
10     b = temp;
11 }
12 
13 //交換兩個浮點型函式
14 void swapDouble(double& a, double& b)
15 {
16     double temp = a;
17     a = b;
18 b = temp; 19 } 20 21 //函式模板 22 template<typename T>//宣告一個模板,告訴編譯器後面程式碼中緊跟著的T不要報錯 T是一個通用資料型別 23 void mySwap(T& a, T& b) 24 { 25 T temp = a; 26 a = b; 27 b = temp; 28 } 29 void test01() 30 { 31 int a = 10; 32 int b = 20; 33 //swapInt(a, b); 34 //利用函式模板交換 35 //兩種方式使用函式模板
36 //1.自動型別推導 37 // mySwap(a, b); 38 //2.顯示指定型別 39 mySwap<int>(a, b); 40 cout << "a=" << a << endl; 41 cout << "b=" << b << endl; 42 43 //double c = 1.1; 44 //double d = 2.2; 45 46 //swapDouble(c, d); 47 //cout << "c=" << c << endl;
48 //cout << "d=" << d << endl; 49 50 } 51 52 int main() 53 { 54 test01(); 55 return 0; 56 }
View Code

 

1.2.3函式模板注意事項

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //函式模板注意事項
 5 template<typename T>//typename可以替換成class
 6 void mySwap(T& a, T& b)
 7 {
 8     T temp = a;
 9     a = b;
10     b = temp;
11 }
12 //1.自動型別推導,必須推匯出一致的資料型別T才可以使用
13 void test01()
14 {
15     int a = 1;
16     int b = 20;
17     char c = 'c';
18 
19     //mySwap(a, b);//正確
20     //mySwap(a, c);//錯誤。推導不出一致的T型別
21     cout << "a=" << a << endl;
22     cout << "b=" << b << endl;
23 
24 }
25 //2.模板必須要確定出T的資料型別,才可以使用
26 template<class T>
27 void func()
28 {
29     cout << "func呼叫" << endl;
30 }
31 void test02()
32 {
33     func<int>();
34 }
35 int main()
36 {
37     test01();
38     test02();
39     return 0;
40 }
View Code