1 //C++提高编程 模板(泛型编程 STL) 2 //模板不可以直接使用 它只是一个框架 3 //模板的通用并不是万能的 4 //语法 5 //template<typename T> 6 //函数模板两种方式 7 //1.自动类型推导 必须推导出一致的数据类型T,才可以使用 8 //2.显示指定类型 模板必须确定出T的数据类型,才可以使用 9 10 11 //函数模板 12 //俩个整形交换的函数 13 #include <iostream> 14 #include <string> 15 #include<fstream> 16 using namespace std; 17 18 void swapInt(int& a, int& b) 19 { 20 int temp = a; 21 a = b; 22 b = temp; 23 } 24 25 //交换俩个浮点型 26 void swapDouble(double& a, double& b) 27 { 28 double temp = a; 29 a = b; 30 b = temp; 31 } 32 33 34 //函数模板 35 //声名一个模板 告诉编译器后面代码总紧跟着的T不要报错 36 //,T是一个通用数据类型 37 template<typename T> 38 void mySwap(T& a, T& b) 39 { 40 T temp = a; 41 a = b; 42 b = temp; 43 } 44 45 46 47 void test01() 48 { 49 50 int a = 10; 51 int b = 20; 52 cout << "a = " << a << "\tb = " << b << endl; 53 //swapInt(a, b); 54 //利用函数模板交换 55 //俩种方式 56 //1.自动类型推导 57 //mySwap(a, b); 58 //cout << "交换 a b " << "a = " << a << "\tb = " << b << endl; 59 60 //显示指定类型 61 mySwap<int>(a, b); 62 cout << "交换 a b " << "a = " << a << "\tb = " << b << endl; 63 64 65 double c = 30.25; 66 double d = 23.23; 67 68 cout << "c = " << c << "\td = " << d << endl; 69 swapDouble(c, d); 70 cout << "交换 c d " << "c = " << c << "\td = " << d << endl; 71 72 73 } 74 75 76 int main() 77 { 78 79 test01(); 80 81 system("pause"); 82 83 return 0; 84 85 }