zoukankan      html  css  js  c++  java
  • c++ 中的函数模板

    #include <iostream>
     
    using namespace std;
     
    template <typename T>
    void fun(T a)
    {
        cout << "void fun(T1 a)" << endl;
    }
     
    template <typename T1, typename T2>
    void fun(T1 a, T2 b)
    {
        cout << "void fun(T1 a, T2 b)" << endl;
    }
     
    void fun(int a, float b)
    {
        cout << "void fun(int a, float b)" << endl;
    }
     
    void main()
    {
        int a = 0;
        float b = 0.0;
        fun(a);   
        fun(a, b);    //普通函数void fun(int a, float b)已经能完美匹配,于是调用普通函数
        fun(b, a);    //这个调用,函数模板有更好的匹配,于是调用函数模板
        fun<>(a, b);    //限定只使用函数模板
        system("pause");
    }

    编译器会优先去调用普通函数,但是当函数模板有更好的匹配时或使用限定符<>时,编译器就会去匹配函数模板。

    总结
        - 函数模板是泛型编程在C++中的应用方式之一
        - 函数模板能够根据实参对参数类型进行推导
        - 函数模板支持显示的指定参数类型
        - 函数模板是C++中重要的代码复用方式
        - 函数模板通过具体类型产生不同的函数
        - 函数模板可以定义任意多个不同的类型参数
        - 函数模板中的返回值类型必须显示指定
        - 函数模板可以像普通函数一样重载
    ---------------------
    作者:火焰山大白菜
    来源:CSDN
    原文:https://blog.csdn.net/lms1008611/article/details/81985815
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    使用shc加密bash脚本程序
    shell加密工具shc的安装和使用
    cgi程序报 Premature end of script headers:
    gearmand安装过程
    解决Gearman 报sqlite3错误
    gearman安装实录
    PHP APC安装与使用
    在Centos上面用yum不能安装redis的朋友看过来
    CentOS 5
    CentOS安装配置MongoDB
  • 原文地址:https://www.cnblogs.com/nanqiang/p/10888857.html
Copyright © 2011-2022 走看看