zoukankan      html  css  js  c++  java
  • C++之函数模板

      C++之函数模板与模版函数

      直接上代码:

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    /*
        名称:C++函数模板
        作者:Michael Joessy
        日期:2017-06-07   高考第一天 莘莘学子加油!
        知识:类型作为参数
        关键字:template typename (class)
    */


    #include <iostream>
    #include <string>
    using namespace std;

    // 运算逻辑完全相同
    int max(int a, int b)
    {
        
    return (a > b) ? a : b;
    }
    float max(float a, float b)
    {
        
    return (a > b) ? a : b;
    }
    double max(double a, double b)
    {
        
    return (a > b) ? a : b;
    }
    char max(char a, char b)
    {
        
    return (a > b) ? a : b;
    }

    // 将类型作为参数
    template <class T>
    T Max(T a, T b)                         
    // 函数模板
    {
        
    return (a > b) ? a : b;
    }

    template<typename T>
    void Swap(T &a, T &b)
    {
        T tmp = a;
        a = b;
        b = tmp;
    }

    // 将变量作为参数
    template<int size>
    void Display()
    {
        cout << size << endl;
    }

    // 多参数
    template<typename T, typename C>
    void Show(T a, C b)
    {
        cout << a << 
    "," << b << endl;
    }

    // typename和class可以混用
    template<typename T, class U>
    T Minus(T *a, U b);


    template<typename T, int size>
    void GoWarrior(T a)
    {
        
    for (int i = 0; i < size; i++)
        {
            cout << a << endl;
        }
    }

    // 函数模板与重载,丰富了重载
    template<typename T>
    void Bloom(T a);

    template<typename T>
    void Bloom(T a, T b);

    template<typename T, int size>
    void Bloom(T a);


    int main(void)
    {
        
    int nMax = Max<int>(812);         // 模板函数,下同
        cout << nMax << endl;

        
    int a = 24;
        
    int b = 23;
        Swap<
    int>(a, b);
        cout << a << 
    "," << b << endl;

        Display<
    99>();

        Show<
    intfloat>(883.14);

        string str(
    "Hey! Warrior~");
        GoWarrior<string, 
    10>(str);

        cin.get();
        
    return 0;
    }
  • 相关阅读:
    C# 托管内存与非托管内存之间的转换
    A*算法详解链接
    【转】使用minizip解压缩多个文件(基于zlib)
    lua中table的遍历,以及删除
    clientHeight scrollHeight offsetHeight
    消息中间件(转)
    js 原型链和继承(转)
    session 和 cookie (转)
    java servlet
    redis 命令
  • 原文地址:https://www.cnblogs.com/MakeView660/p/6955514.html
Copyright © 2011-2022 走看看