C++ with 模板*黑馬程式設計師
阿新 • • 發佈:2022-04-04
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;View Code18 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 }
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