当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

基础知识:C++的模板及模板特化

    说起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;

    }

};

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接