Welcome

首页 / 软件开发 / C++ / C++类模板的三种特化

C++类模板的三种特化2011-06-02说起C++的模板及模板特化,相信很多人都很熟悉,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了模板特化的几种类型,一是特化为绝对类型;而是特化为引用,指针类型;三是特化为另外一个模板类。

这里用一个简单的例子来说明这三种情况:

// general versiontemplate<class T>class Compare{public:static bool IsEqual(const T& lh, const T& rh){return lh == rh;}};
这是一个用于比较的模板类,里面可以有多种用于比较的函数,以IsEqual为例。

一、特化为绝对类型

也就是说直接为某个特定类型做特化,这是我们最常见的一种特化方式,如特化为float,double等

// specialize for floattemplate<>class Compare<float>{public:static bool IsEqual(const float& lh, const float& rh){return abs(lh - rh) < 10e-3;}};// specialize for doubletemplate<>class Compare<double>{public:static bool IsEqual(const double& lh, const double& rh){return abs(lh - rh) < 10e-6;}};