一、什么是模板(Template)
模板是 C++ 支持的泛型编程机制,可以用来编写与类型无关的代码,实现代码的复用。编译器根据调用时提供的类型参数生成对应版本代码,称为模板实例化。
二、函数模板(Function Template)
- 模板函数在编译时根据传入参数类型自动生成对应函数代码(实例化),普通函数是编写时确定类型。
- 模板函数可以避免为不同类型写多个重载版本。
语法
- template<typename T>
- 返回类型 函数名(参数列表) {
- // 使用类型T的代码
- }
复制代码 或者:- template<typename T>
- 返回类型 函数名(参数列表) {
- // 使用类型T的代码
- }
复制代码 typename 和 class 在这里是等价的。
示例:通用交换函数
- template<typename T>
- void mySwap(T& a, T& b) {
- T temp = a;
- a = b;
- b = temp;
- }
复制代码 使用:- int x = 1, y = 2;
- mySwap(x, y); // 自动推导T为int
- double a = 1.1, b = 2.2;
- mySwap(a, b); // 自动推导T为double
复制代码 三、类模板(Class Template)
语法
- template<typename T>
- class ClassName {
- public:
- T data;
- void print();
- };
复制代码 [code]templateclass MyClass {public: void show();};templatevoid MyClass::show() { std::cout |