21xrx.com
2025-03-23 20:04:18 Sunday
文章检索 我的文章 写文章
C++11模板类的使用
2023-06-24 04:22:18 深夜i     19     0
C++11 模板 使用

C++11引入了许多新的特性,其中之一就是模板类的改进。模板类是一种泛型编程的方式,可以在编写代码时不指定数据类型,而是在实例化时指定。这样一来,同一段代码就可以处理不同类型的数据,提高了代码的复用性和灵活性。

一、模板类基础语法

使用模板类需要使用关键字template和typename,语法如下:

template<typename T>
class Class_Name
  // 模板类的成员和方法
;

其中typename T表示使用泛型类型T作为模板参数,Class_Name表示模板类的名字。

二、模板类的使用

在使用模板类时,需要在实例化时传递实际类型,语法如下:

Class_Name<Type> Object_Name;

其中Type是实际要使用的类型名,Object_Name是对象的名字。

三、模板类的特化

有时候需要特殊处理某些类型的数据,这时候可以使用模板类的特化。特化是指为某个具体类型编写一个特殊版本的模板类。特化的语法如下:

template<>
class Class_Name<Specific_Type>
  // 特化类的成员和方法
;

其中,Specific_Type是要特化的类型。

四、示例代码

下面是一个模板类的示例代码,该类可以计算两个数的最大值和最小值:

#include <iostream>
#include <algorithm>
using namespace std;
template<typename T>
class MaxMin {
private:
  T a, b;  // 两个待计算的数字
public:
  MaxMin(T x, T y) : a(x), b(y) {};
  T max() {return ::max(a, b);}  // 计算最大值
  T min() {return ::min(a, b);}  // 计算最小值
};
int main() {
  MaxMin<int> mm1(5, 3);  // 创建MaxMin对象,并传入两个数字
  MaxMin<float> mm2(5.2, 3.8);
  cout << "The max value of mm1 is " << mm1.max() << endl;  // 调用max方法输出结果
  cout << "The max value of mm2 is " << mm2.max() << endl;
  cout << "The min value of mm1 is " << mm1.min() << endl;  // 调用min方法输出结果
  cout << "The min value of mm2 is " << mm2.min() << endl;
  return 0;
}

运行结果:

The max value of mm1 is 5
The max value of mm2 is 5.2
The min value of mm1 is 3
The min value of mm2 is 3.8

可以看到,通过模板类的方式,我们可以很方便地对不同类型的数进行最大值和最小值的计算。

  
  

评论区