C++模板介绍

定义

C++模板是一种编程技术,它允许程序员在编译时生成具有特定类型的函数或类,而无需在运行时进行类型检查。模板是一种泛型编程的方式,它使得程序员可以编写可适用于多种数据类型的代码,提高了代码的重用性和灵活性。

C++模板可以分为函数模板和类模板两种类型。

  1. 函数模板定义了一种通用的函数,可以接受多种类型的参数,并根据不同的类型生成相应的函数。
  2. 类模板则是定义了一种通用的类,可以包含多种类型的成员变量和成员函数。
函数模板的定义
template 
void functionName(T parameterName) {
    // 函数体
}

其中,typename T表示模板参数,可以是任何数据类型。functionName是函数名,parameterName是参数名。在函数体中,可以使用T表示参数的类型。

类模板的定义
template 
class className {
public:
    T data;
    void functionName() {
        // 函数体
    }
};

其中,typename T表示模板参数,可以是任何数据类型。className是类名,data是类中的成员变量,functionName()是类中的成员函数。在类中的函数体中,可以使用T表示数据类型。

使用注意

使用模板时,编译器会根据实际类型生成相应的函数或类。例如,如果使用int类型的参数调用函数模板,编译器会生成一个接受int类型参数的函数。如果使用int类型的对象创建类模板的实例,编译器会生成一个包含int类型成员变量和成员函数的类。

需要注意的是,在使用类模板时,如果在类中的函数使用了模板参数,那么这个函数必须在类外定义。否则,编译器会报错。

应用举例

#include 
#include 

// 函数模板
template 
void printArray(const std::vector& arr) {
    for (const auto& element : arr) {
        std::cout << element << " ";
    }
    std::cout << std::endl;
}

// 类模板
template 
class Box {
public:
    Box(T value) : value_(value) {}
    void print() const { std::cout << value_ << std::endl; }
private:
    T value_;
};

int main() {
    // 使用int类型调用函数模板
    std::vector intArray = {1, 2, 3, 4, 5};
    printArray(intArray);

    // 使用double类型调用函数模板
    std::vector doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5};
    printArray(doubleArray);

    // 使用int类型创建类模板实例
    Box intBox(10);
    intBox.print();

    // 使用double类型创建类模板实例
    Box doubleBox(10.5);
    doubleBox.print();

    return 0;
}

你可能感兴趣的:(C/C++,c++,开发语言)