码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 模板联系摘要

时间:2015-03-31 12:28:37      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

万分感谢 空明流转 菊苣的模板教程: 

https://github.com/wuye9036/CppTemplateTutorial

 本文就是给自己快速参阅回想用的,不一定适合别人看。

 

#include <iostream>
using namespace std;

template <typename T> class AddFloatOrMulInt
{
    static T Do(T a, T b)
    {
        // 在这个例子里面一般形式里面是什么内容不重要,因为用不上
        
// 这里就随便给个0吧。
        return T(0);
    }
};

// 其次,我们要指定T是int时候的代码,这就是特化:
template <> class AddFloatOrMulInt<int>
{
public:
    static int Do(int a, int b) // 
    {
        return a * b;
    }
};

// 再次,我们要指定T是float时候的代码:
template <> class AddFloatOrMulInt<float>
{
public:
    static float Do(float a, float b)
    {
        return a + b;
    }
};



int main()
{
    int result = AddFloatOrMulInt<int>::Do(1,2);
    cout<<result;

    getchar();
    return 0;
}

/*
我们再把特化的形式拿出来一瞧:这货有点怪啊: template <> class AddFloatOrMulInt<int>。别急,我给你解释一下。

// 我们这个模板的基本形式是什么?
template <typename T> class AddFloatOrMulInt;

// 但是这个类,是给T是Int的时候用的,于是我们写作
class AddFloatOrMulInt<int>
// 当然,这里编译是通不过的。

// 但是它又不是个普通类,而是类模板的一个特化(特例)。
// 所以前面要加模板关键字template,
// 以及模板参数列表
template <  这里要填什么? > class AddFloatOrMulInt<int>;

// 最后,模板参数列表里面填什么?因为原型的T已经被int取代了。所以这里就不能放任何额外的参数了。
// 所以这里要放空。
template <> class AddFloatOrMulInt<int>
{
    // ... 针对Int的实现 ... 
}

// Bingo!

*/ 

C++ 模板联系摘要

标签:

原文地址:http://www.cnblogs.com/likeatree/p/4380296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!