zoukankan      html  css  js  c++  java
  • C++ 模板练习摘要

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

    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!

    */ 

  • 相关阅读:
    SQL 表连接
    SQL 时间日期函数
    SQL 转换函数
    25 -2 正则爬虫例子
    25 -1 正则 re模块 (findall、search、match、sub、subn、split、compile、finditer)
    25 python 常用模块
    24- 1 模块
    23-8 python模块定义
    23-5 面试题:1000个员工,我们认为名字和年龄相等,就为同一个人
    23-4 __eq__方法
  • 原文地址:https://www.cnblogs.com/likeatree/p/4380296.html
Copyright © 2011-2022 走看看