当前位置: 代码迷 >> 综合 >> 【C++】模板和泛型编程
  详细解决方案

【C++】模板和泛型编程

热度:22   发布时间:2024-02-20 01:59:41.0

1、模板

函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。

举例如下:

我们想要编写一个函数比较两个值,并指出第一个值是<,=,>第二个值。第一次尝试是定义几个重载函数。

int compare(const string &v1, const string &v2) {if (v1 < v2)return -1;if (v1 > v2)return 1;return 0;
}int compare(const double &v1, const double &v2) {if (v1 < v2)return -1;if (v1 > v2)return 1;return 0;
}//这两个函数唯一的区别是形参类型不同,每个待比较的类型都需要重复函数的函数体,麻烦且易出错。
//更重要的是需要事先知道究竟可能会比较哪些类型。
//如果希望将函数用于未知类型,这种策略就不起作用了。

下面是compare的模板版本:

template<typename T>
int compare(const T &v1, const T &v2) {if (v1 < v2)return -1;if (v1 > v2)return 1;return 0;
}

2、泛型编程

定义:以独立于任何特定类型的方式编写代码。

使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。模板是泛型编程的基础。

泛型编程与面向对象编程一样,都依赖于某种形式的多态性。面向对象编程所依赖的多态性称为运行时多态性,泛型编程所依赖的多态性称为编译时多态性或参数式多态性。

 

参考:C++ primer 中文版 第四版 p526

  相关解决方案