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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    udhcpd配置及使用
    射频全网通笔记(附全球频段划分及主要运营商对应表)
    Source Insight教程
    关于学习
    一次OGG ERROR OGG-01091 Unable to open file "./dirdat/th079817" 的问题解决
    mysql建立的一个自动更新组织树案案例
    1055
    了解一个A*数据库的数据
    mysql安装
    通过CONTRAB 执行脚本进行监控
  • 原文地址:https://www.cnblogs.com/nanqiang/p/10888857.html
Copyright © 2011-2022 走看看