C++ 模板
C++ 模板
模板允许您编写一个可与不同数据类型一起使用的函数或类。
它们有助于避免重复代码,并使程序更灵活。
C++ 函数模板
您可以使用 template 关键字创建一个函数模板:
语法
template <typename T>
return_type function_name(T parameter) {
// 代码
}
T是数据类型的占位符(如int、float等)。- 您可以使用任何名称代替
T,但T很常见。
实例
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout << add<int>(5, 3) << "\n";
cout << add<double>(2.5, 1.5) << "\n";
return 0;
}
在上面的例子中,add<int>(5, 3) 告诉编译器对 T 使用 int,而 add<double>(2.5, 1.5) 告诉它使用 double。
C++ 类模板
您也可以使用模板来创建适用于任何数据类型的类:
语法
template <typename T>
class ClassName {
// 使用 T 的成员和方法
};
下面的例子定义了一个模板类 Box,它可以存储和显示任何数据类型的值,然后为 int 和一个 string 各创建一个盒子:
实例
template <typename T>
class Box {
public:
T value;
Box(T v) {
value = v;
}
void show() {
cout << "值:" << value << "\n";
}
};
int main() {
Box<int> intBox(50);
Box<string> strBox("Hello");
intBox.show();
strBox.show();
return 0;
}
这个例子定义了一个模板类 Pair,它存储两个不同类型的值并显示它们,然后为一个人的姓名和年龄创建一个对,为 ID 和分数创建另一个对:
实例
template <typename T1, typename T2>
class Pair {
public:
T1 first;
T2 second;
Pair(T1 a, T2 b) {
first = a;
second = b;
}
void display() {
cout << "第一个:" << first << ",第二个:" << second << "\n";
}
};
int main() {
Pair<string, int> person("John", 30);
Pair<int, double> score(51, 9.5);
person.display();
score.display();
return 0;
}
为什么使用模板?
模板让您可以:
- 避免为不同类型重复相同的逻辑
- 编写更简洁、可重用的代码
- 支持泛型编程
注意:模板必须在使用它们的同一文件中定义(通常在 .h 文件中)。