C++ 模板

C++ 模板

模板允许您编写一个可与不同数据类型一起使用的函数或类。

它们有助于避免重复代码,并使程序更灵活。

C++ 函数模板

您可以使用 template 关键字创建一个函数模板:

语法

template <typename T>
return_type function_name(T parameter) {
  // 代码
}
  • T 是数据类型的占位符(如 intfloat 等)。
  • 您可以使用任何名称代替 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 文件中)。