C++之函数模板
C++之函数模板与模版函数
直接上代码:
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
/*
名称:C++函数模板 作者:Michael Joessy 日期:2017-06-07 高考第一天 莘莘学子加油! 知识:类型作为参数 关键字:template typename (class) */ #include <iostream> #include <string> using namespace std; // 运算逻辑完全相同 int max(int a, int b) { return (a > b) ? a : b; } float max(float a, float b) { return (a > b) ? a : b; } double max(double a, double b) { return (a > b) ? a : b; } char max(char a, char b) { return (a > b) ? a : b; } // 将类型作为参数 template <class T> T Max(T a, T b) // 函数模板 { return (a > b) ? a : b; } template<typename T> void Swap(T &a, T &b) { T tmp = a; a = b; b = tmp; } // 将变量作为参数 template<int size> void Display() { cout << size << endl; } // 多参数 template<typename T, typename C> void Show(T a, C b) { cout << a << "," << b << endl; } // typename和class可以混用 template<typename T, class U> T Minus(T *a, U b); template<typename T, int size> void GoWarrior(T a) { for (int i = 0; i < size; i++) { cout << a << endl; } } // 函数模板与重载,丰富了重载 template<typename T> void Bloom(T a); template<typename T> void Bloom(T a, T b); template<typename T, int size> void Bloom(T a); int main(void) { int nMax = Max<int>(8, 12); // 模板函数,下同 cout << nMax << endl; int a = 24; int b = 23; Swap<int>(a, b); cout << a << "," << b << endl; Display<99>(); Show<int, float>(88, 3.14); string str("Hey! Warrior~"); GoWarrior<string, 10>(str); cin.get(); return 0; } |
希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯分享时的吝啬。