• c++模版函数


    1.定义

    可以使用class或者typename字段来申明

    
    template <class T>
    
    template <class T1, class T2, ...class TN>
    
    

    2.作用

    使用函数模版可以达到重载的目的,针对参数类型不同函数实现一致的情况。

    3.使用

    
    #include <iostream>
    
    using namespace std;
    
    namespace tmp
    
    {
    
    /*函数模版: T代表一种数据类型*/
    
    template <class T>
    
    T min(T x, T y)
    
    {
    
    return (x < y)?x:y;
    
    }
    
     
    
    /*函数模版: T1和T2代表两种不同的数据类型*/
    
    template <class T1, class T2>
    
    void max(T1 x, T2 y)
    {
    
    cout << "T1="<< x << endl;
    cout << "T2="<< y << endl;
    
    }
    
    }
    
     
    int main(void)
    
    {
    
    #if 0
    
    int a1 = 2, a2 = 4;
    
    double d1 = 1.3, d2 = 2.3;
    
    cout << "较小的整数:" << tmp::min(a1, a2) << endl;
    cout << "较小的实数:" << tmp::min(d1, d2) << endl;
    
    #endif
    
    tmp::max(3, 4.5);
    tmp::max("123", 3);
    
    return 0;
    
    }
    
     
    
    

    4.原理

    函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型代替类型参数标识符之后,才能产生真正的函数。

    5.应用规则

    a. 寻找一个参数完全匹配的函数,若找到就调用它。若参数完全匹配的函数多于一个,则这个调用是一个错误的调用。

    b. 寻找一个函数模板,若找到就将其实例化生成一个匹配的模板函数并调用它。

    c. 若上面两条都失败,则使用函数重载的方法,通过类型转换产生参数匹配,若找到就调用它。

    d. 若上面三条都失败,还没有找都匹配的函数,则这个调用是一个错误的调用。

    终于明白,“喜欢”是一种莫大的能量!
  • 相关阅读:
    第十六天
    第十五天
    STM8L段式液晶驱动器
    STM8L的LCD接口详解及驱动程序
    作为合格的工程师,这些电路图一辈子都得记住!
    双向晶闸管触发电路工作原理图
    3~15伏10A大电流可调稳压电源
    用TL431制作简单充电器电路
    5V USB充电器电路图
    555
  • 原文地址:https://www.cnblogs.com/tml839720759/p/5458696.html
Copyright © 2020-2023  润新知