C++ 模板学习笔记
什么是模板?
C++ 中的模板是一种可重用的代码形式,允许将类型和函数独立。它们可以用于生成类型、函数或类等。
模板有两种形式:
- 函数模板
- 类模板
函数模板
函数模板允许以通用方式定义函数,即允许函数在内部操作与其参数的类型无关的数字、字符和其他数据类型。定义一个函数模板的一般形式如下:
c++Copy Codetemplate <typename T>
T add(T a, T b) {
return a + b;
}
其中,typename T
表示我们将在函数中使用一个类型 T
,而不是具体的数据类型。在函数中,我们可以使用泛型类型 T
来实现操作。
下面是一个使用函数模板的实例:
c++Copy Code#include <iostream>
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
std::cout << add(1, 2) << std::endl; // 输出 3
std::cout << add(1.0, 2.0) << std::endl; // 输出 3.0
return 0;
}
在这个例子中,我们调用了 add()
函数两次,分别使用了整型和浮点型参数,并成功地输出了它们的和。
类模板
类模板是定义一个通用类的方式。定义一个类模板的一般形式如下:
c++Copy Codetemplate <typename T>
class myClass {
public:
T data;
myClass(T d): data(d) {}
void printData() {
std::cout << data << std::endl;
}
};
这里,我们声明了一个 myClass
类模板,并使用泛型类型 T
定义了它的数据成员和构造函数。下面是一个使用类模板的实例:
c++Copy Code#include <iostream>
template <typename T>
class myClass {
public:
T data;
myClass(T d): data(d) {}
void printData() {
std::cout << data << std::endl;
}
};
int main() {
myClass<int> obj1(10);
obj1.printData();
myClass<float> obj2(3.14);
obj2.printData();
return 0;
}
在这个例子中,我们创建了两个对象,一个使用整型数据,一个使用浮点型数据,并成功地输出它们。
总结
在 C++ 中,模板是非常有用的工具,可以帮助我们编写更通用、更具有可读性和可复用性的代码。本文介绍了函数模板和类模板的使用方式,并举例说明了它们的用法。