📅  最后修改于: 2023-12-03 15:00:03.150000             🧑  作者: Mango
在 C++ 中,模板的使用范围相当广泛。除了作为类和函数的基础,还可以用来定义成员函数。
当一个类中的函数需要支持多种类型时,我们可以使用模板成员函数来避免手动实现多个函数的重复代码。本文将介绍如何在 CPP 文件中定义模板成员函数,并给出具体的使用案例。
在 CPP 文件中定义模板成员函数的语法如下所示:
template <typename T>
void ClassName::MethodName(T value) {
// 函数体
}
其中,ClassName
是类的名称,MethodName
是模板成员函数的函数名,T
是模板参数。
与模板类的定义类似,模板成员函数的定义通常应该放在头文件中,以便在其他文件中重用。
下面的代码示例展示了一个使用模板成员函数的例子:
#include <iostream>
template <typename T>
class Array {
public:
Array(int size) : size_(size), data_(new T[size]) {}
~Array() { delete[] data_; }
template <typename U>
void fill(U value) {
for (int i = 0; i < size_; ++i) {
data_[i] = static_cast<T>(value);
}
}
void print() {
for (int i = 0; i < size_; ++i) {
std::cout << data_[i] << ' ';
}
std::cout << std::endl;
}
private:
int size_;
T* data_;
};
int main() {
Array<int> int_array(5);
int_array.fill(2.5); // 使用模板成员函数
int_array.print();
Array<double> double_array(3);
double_array.fill(1); // 同样可以使用模板成员函数
double_array.print();
return 0;
}
在这个例子中,我们定义了一个 Array
类,它有一个模板成员函数 fill
,用于填充数组中的元素。注意,在调用 fill
函数时,我们可以传入任意类型的参数,而不仅仅是类模板的类型。
模板成员函数是 C++ 中一种非常强大和灵活的功能,可以帮助我们简化代码、提高代码的可重用性。能够熟练地使用模板成员函数,对于我们成为一名优秀的 C++ 程序员来说是非常重要的。