模板
C++模板是一种强大的语言特性,允许开发者编写与类型无关的代码,从而实现代码的复用和灵活性。通过模板,可以定义函数和类,具体实现将由具体的类型实例化决定。
函数模板
函数模板(Function Templates):
函数模板用于定义一个通用的函数,该函数可以接受任意类型的参数。通过使用模板参数,能够根据传递的类型生成合适的函数。
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
int intResult = add(2, 3); // 整数相加
double doubleResult = add(2.5, 3.5); // 浮点数相加
return 0;
}
类模板
类模板允许定义一个通用的类,其中的数据成员和成员函数可以用模板参数来表示,以支持不同类型的实例。
template <typename T>
class Box {
private:
T data;
public:
Box(T d) : data(d) {} // 构造函数
T getData() const {
return data;
}
};
int main() {
Box<int> intBox(123); // 存储整数
Box<std::string> strBox("Hello"); // 存储字符串
return 0;
}
其他类型模板
模板特化(Template Specialization):
全特化:为特定类型提供特定实现。
偏特化:为某些类型组合提供特定实现
(全特化:)
template <typename T>
class Box {
public:
void show() {
std::cout << "Generic Box" << std::endl;
}
};
// 对特定类型进行全特化
template <>
class Box<int> {
public:
void show() {
std::cout << "Integer Box" << std::endl;
}
};
非类型模板参数:
模板参数不仅可以是类型,还可以是常量值,例如整数值。
template <typename T, int size>
class Array {
private:
T arr[size]; // 固定大小数组
public:
int getSize() const { return size; }
};
int main() {
Array<int, 5> intArray; // 创建大小为 5 的整型数组
return 0;
}
模板元编程:
通过模板进行编程的一种技术,利用模板在编译时进行计算和类型推导。可以用来实现编译器生成代码的复杂行为。
总结
1.C++ 模板提供了编写通用和可复用代码的能力,使函数和类能够处理不同的数据类型。
2.主要类型包括函数模板和类模板,此外还有模板特化、非类型模板参数等高级特性。
3.模板元编程利用编译时计算,能实现更复杂的类型操作和性能优化。
模板在 C++ 中是一种非常强大且灵活的特性,可以有效地提升代码的重用性和可维护性。
标签:Box,return,函数,哪些,int,C++,类型,模板 From: https://blog.csdn.net/2302_80908313/article/details/143522490