过多 spa type 函数模板 style span 函数 它的
泛型编程和模板
0.泛型编程
1.函数模板
2.类模板
-----------------------------------------------------------------------------------------------------------
0.泛型编程
所谓泛型就是以独立于任何特定类型的方式编写代码。前面介绍的标准库的容器、迭代器和算法都是泛型编程的具体应用。 模板是泛型编程的基础。使用模板的时候不需要知道模板是如何定义的,但今天我们来介绍如何定义自己的模板类和模板函数。
-----------------------------------------------------------------------------------------------------------
1.模板基础
函数模板如下面的比较函数: template <typename T> //template 和typename 都是关键字,保持不变,变的只有类型T int cmp(T v1, T v2) { if(v1 > v2) return 1 else if(v1 < v2) return -1; return 0; } cmp(10, 20);cmp(str1, str2);
编译器将实例化cmp的两个不同的版本,使用int和string代替T来生成上述两种类型的函数。int cmp(int v1, int v2){ if(v1 > v2) return 1 else if(v1 < v2) return -1; return 0;}
int cmp(string v1, string v2){ if(v1 > v2) return 1 else if(v1 < v2) return -1; return 0;} 可以将模板函数声明为inline函数。如template<typename T>inline int cmp(T v1, T v2); 注意inline的放置位置。
-----------------------------------------------------------------------------------------------------------
2.类模板类模板也是模板的一种,需要以关键字template开头后接模板形参表。类模板的定义跟一般的类定义类似,可以有自己的数据成员和方法以及类型成员。还可以定义构造函数和析构函数。只是在定义类和类的成员函数的时候,使用模板形参作为占位符,与内置类型或类类型使用方式完全一样。template<typename T>class myclass{ public: class_name(); ~class_name(); T func(T& t); private: T m_t;}; 类模板成员函数模板成员函数的定义需要以关键字template关键字开始,后接模板形参表。template
C++笔记(7):泛型编程和模板(函数模板和类模板)
来源: http://www.bubuko.com/infodetail-2057010.html