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

  • 相关阅读:
    有一种努力叫“凌晨四点”
    编程思想
    小记
    团队精神与集体主义
    变量起名
    软件项目估量方法
    戏说QQ
    压力说
    AngularJS指令基础(一)
    Leetcode 1021. Best Sightseeing Pair
  • 原文地址:https://www.cnblogs.com/nanqiang/p/10888857.html
Copyright © 2011-2022 走看看