英文互动网站建设各网站收录
1️⃣ 模板是什么?
模板(Template)是 C++ 的一种泛型机制,让你写一次代码,支持多种数据类型。
常用于实现 「类型无关」 的函数或类,比如 std::vector<T>
、std::sort()
等都基于模板。
2️⃣ 函数模板(Function Template)
🔹 定义语法:
template<typename T>
T add(T a, T b) {return a + b;
}
🔍 分解语法:
-
template
:C++ 关键字,表示“声明一个模板”。 -
<typename T>
:T
是类型参数,像函数的形参一样,是“类型的占位符”。typename
表示 T 是一个类型名,也可以写作class T
,两者等价,只是typename
在现代 C++ 中更推荐使用。
-
T add(T a, T b)
:这里T
被当作类型使用,函数参数和返回值都用这个模板参数。
template<typename T>
必须紧挨着函数或类定义上方
🧪 使用方法:
int result = add<int>(3, 5); // 显式指定类型为 int
double d = add(1.1, 2.2); // 编译器自动推导类型为 double
✅ 模板定义必须放在头文件或
.h/.hpp
文件中,因为模板是在编译时实例化的。
3️⃣ 类模板(Class Template)
🔹 定义语法:
template<typename T>
class Box {
public:void set(T v) { value = v; }T get() { return value; }
private:T value;
};
🔍 分解语法:
- 与函数模板一样,先写一行
template<typename T>
来声明类型参数。 class Box
里可以使用这个类型参数 T,例如作为成员变量、函数参数或返回值的类型。
🧪 使用方法:
Box<int> b1;
b1.set(10);Box<std::string> b2;
b2.set("hello");
✅ 类模板也必须放在头文件中,不能只声明不定义。