21xrx.com
2024-12-23 00:50:21 Monday
登录
文章检索 我的文章 写文章
C++模板类的声明与定义方式
2023-07-06 12:28:09 深夜i     --     --
C++ 模板类 声明 定义方式 泛型编程

C++是一个广泛使用的编程语言。它允许程序员使用诸如模板这样的工具来增强其编程能力。模板允许程序员编写通用代码,从而提高代码的重用性。本文将探讨C++模板类的声明和定义方式,展示如何将模板类用于C++程序设计中。

模板类的基本定义方式如下:


template <typename T>

class MyClass {

public:

  void print(T val);

  T add(T a, T b);

};

这个例子中,使用`template`关键字表示类是一个模板类。`typename T`声明了一个类型参数`T`,即我们将在代码编写时指定的类型。`MyClass`类具有两个成员函数,`print`和`add`。它们都使用类型参数`T`作为参数和返回类型。

接下来是模板类的声明和定义方式。类声明通常在头文件中执行:


// MyClass.h

template <typename T>

class MyClass {

public:

  void print(T val);

  T add(T a, T b);

};

头文件仅仅包含函数和成员的声明。因为模板类可以在需要的任意地方实例化,所以如果只有一个声明,编译器不能生成模板函数的定义。因此,模板类的实现通常在`.cpp`文件中进行:


// MyClass.cpp

#include "MyClass.h" // 包含声明

template <typename T>

void MyClass<T>::print(T val)

  std::cout << val << std::endl;

template <typename T>

T MyClass<T>::add(T a, T b) {

  return a + b;

}

这里是函数的实现,`MyClass`中的成员函数在`.cpp`文件中实现。我们再次使用`template`关键字声明模板类,然后实现每个函数。语法`MyClass ::`告诉编译器这个函数是模板类的一部分,它使用类型`T`作为参数。

完整的模板类声明将与`.cpp`文件中的定义文件一起在一个应用程序中使用。例如,以下代码演示了如何使用MyClass类:


#include "MyClass.h"

int main() {

  MyClass<int> c;

  c.print(42);

  std::cout << c.add(2, 3) << std::endl;

  MyClass<double> d;

  d.print(3.14);

  std::cout << d.add(2.5, 3.5) << std::endl;

  return 0;

}

首先,我们包含了类的声明。然后用`MyClass `和`MyClass `声明了两个实例。因为MyClass是模板类,我们可以实例化不同类型的版本。最后,我们打印了一些输出,展示类的行为。

根据这个示例,我们可以看到模板类是如何工作的。使用模板类,可以编写通用代码,从而提高代码的重用性。模板类的声明和定义方式可能会有所不同,但它们都具有相同的基本形式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复