C++ 模板学习笔记

什么是模板?

C++ 中的模板是一种可重用的代码形式,允许将类型和函数独立。它们可以用于生成类型、函数或类等。

模板有两种形式:

  • 函数模板
  • 类模板

函数模板

函数模板允许以通用方式定义函数,即允许函数在内部操作与其参数的类型无关的数字、字符和其他数据类型。定义一个函数模板的一般形式如下:

c++Copy Code
template <typename T> T add(T a, T b) { return a + b; }

其中,typename T 表示我们将在函数中使用一个类型 T,而不是具体的数据类型。在函数中,我们可以使用泛型类型 T 来实现操作。

下面是一个使用函数模板的实例:

c++Copy Code
#include <iostream> template <typename T> T add(T a, T b) { return a + b; } int main() { std::cout << add(1, 2) << std::endl; // 输出 3 std::cout << add(1.0, 2.0) << std::endl; // 输出 3.0 return 0; }

在这个例子中,我们调用了 add() 函数两次,分别使用了整型和浮点型参数,并成功地输出了它们的和。

类模板

类模板是定义一个通用类的方式。定义一个类模板的一般形式如下:

c++Copy Code
template <typename T> class myClass { public: T data; myClass(T d): data(d) {} void printData() { std::cout << data << std::endl; } };

这里,我们声明了一个 myClass 类模板,并使用泛型类型 T 定义了它的数据成员和构造函数。下面是一个使用类模板的实例:

c++Copy Code
#include <iostream> template <typename T> class myClass { public: T data; myClass(T d): data(d) {} void printData() { std::cout << data << std::endl; } }; int main() { myClass<int> obj1(10); obj1.printData(); myClass<float> obj2(3.14); obj2.printData(); return 0; }

在这个例子中,我们创建了两个对象,一个使用整型数据,一个使用浮点型数据,并成功地输出它们。

总结

在 C++ 中,模板是非常有用的工具,可以帮助我们编写更通用、更具有可读性和可复用性的代码。本文介绍了函数模板和类模板的使用方式,并举例说明了它们的用法。