说起C++的模板及模板特化,相信很多人都很熟悉,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了模板特化的几种类型,一是特化为绝对类型;而是特化为引用,指针类型;三是特化为另外一个模板类。
这里用一个简单的例子来说明这三种情况:
// general version template<class T> class Compare { public: static bool IsEqual(const T& lh, const T& rh) { return lh == rh; } };
这是一个用于比较的模板类,里面可以有多种用于比较的函数,以IsEqual为例。
一、特化为绝对类型
也就是说直接为某个特定类型做特化,这是我们最常见的一种特化方式,如特化为float,double等
// specialize for float template<> class Compare<float> { public: static bool IsEqual(const float& lh, const float& rh) { return abs(lh - rh) < 10e-3; } }; // specialize for double template<> class Compare<double> { public: static bool IsEqual(const double& lh, const double& rh) { return abs(lh - rh) < 10e-6; } };
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, 模板
, const
, 类模板
, double
, 类型
, 特化
偏特化
c 模板特化、c 函数模板特化、c模板偏特化、c 模板 特化 void、c 模板类 特化,以便于您获取更多的相关知识。
时间: 2024-08-01 14:24:59