zoukankan      html  css  js  c++  java
  • 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. 若上面三条都失败,还没有找都匹配的函数,则这个调用是一个错误的调用。

    终于明白,“喜欢”是一种莫大的能量!
  • 相关阅读:
    Python爬取Boss直聘,帮你获取全国各类职业薪酬榜
    【深入浅出etcd系列】1. 架构概览
    00041_类与接口的关系
    ASP.NET MVC4 部分视图
    Ueditor编辑器 从word中复制内容带多张图片
    百度Ueditor编辑器 从word中复制内容带多张图片
    百度Ueditor 从word中复制内容带多张图片
    C#.NET实现大文件上传
    .NET实现大文件上传
    asp.net实现大文件上传
  • 原文地址:https://www.cnblogs.com/tml839720759/p/5458696.html
Copyright © 2011-2022 走看看