📜  cpp 文件中的模板成员函数 - C++ (1)

📅  最后修改于: 2023-12-03 15:00:03.150000             🧑  作者: Mango

CPP 文件中的模板成员函数

在 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++ 程序员来说是非常重要的。