• 函数重载


    1.函数重载概念

    函数重载(Function Overload)

    用同一个函数名定义不同的函数

    当函数名和不同的参数搭配时函数的含义不同

    2 .函数重载的判断标准 

    函数重载至少满足下面的一个条件: 

    参数个数不同 

    参数类型不同 

    参数顺序不同 

    3 .函数返回值不是函数重载的判断标准 

    4 .编译器调用重载函数的准则 

        将所有同名函数作为候选者 

        尝试寻找可行的候选函数  

        精确匹配实参 

        通过默认参数能够匹配实参 

        通过默认类型转换匹配实参 

        匹配失败 

        最终寻找到的可行候选函数不唯一,则出现二义性,编译失败。 

        无法匹配所有候选者,函数未定义,编译失败。

    函数重载的注意事项

    重载函数在本质上是相互独立的不同函数(静态链编)

    重载函数的函数类型是不同的

    函数返回值不能作为函数重载的依据

    函数重载是由函数名和参数列表决定的。

    #include <iostream>
    using namespace std;
    
    void myPrint(int a)
    {
        cout<<"a="<<a<<endl;
    }
    
    void myPrint(const char *p)
    {
        //cout<<"p="<<p<<endl;
        printf("%s 
    ",p);
    }
    
    void myPrint(int a,int b)
    {
        cout<<"a="<<a<<endl;
        cout<<"b="<<b<<endl;
    }
    
    /*
    //返回值 不是 判断函数重载的标准
    int myPrint(int a,int b)
    {
        cout<<"a="<<a<<endl;
        cout<<"b="<<b<<endl;
    }
    */
    
    //1 当函数名和不同的参数搭配时函数的含义不同
    //2 函数重载的判断标准
    //参数个数不同
    //参数类型不同 
    //参数顺序不同
    
    //3 返回值 不是 判断函数重载的标准
    
    //4 重载函数的调用标准
    
    int main(void)
    {
        myPrint(1);
        myPrint("11122222333aaa");
        myPrint(1,2);
        
        return 0;
    }

    函数默认参数 和 函数重载 在一起  可能会产生二义性

    k//函数默认参数 和 函数重载 在一起
    void myfunc(int a,int b,int c=0)
    {
        cout<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;
    }
    
    void myfunc(int a,int b)
    {
        cout<<"a:"<<a<<"b:"<<b<<endl;
    }
    
    void myfunc(int a)
    {
        cout<<"a:"<<a<<endl;
    }
    
    int main(void)
    {
        //myfunc(1,2); //函数调用时 会产生二义性
        myfunc(1);
        return 0;
    }

     

      

  • 相关阅读:
    如何在控件的设计时得到窗体设计器中的所有控件
    如何将一个数组绑定到DataList
    在找C#语言规范吗?只要你装了VS,你就能找到
    lync相关功能介绍
    下表描述了Foundation 2010 、 SharePoint Server 2010 和 FAST Search Server 2010三者的搜索能力
    sharepoint 2010 针对移动端的支持
    SharePoint Foundation 2010 SP1 改进概述
    RMS FOR EXCHANGE 2010
    Excel Web App使用说明
    win2008 server rms部署
  • 原文地址:https://www.cnblogs.com/Liu-Jing/p/9694004.html
Copyright © 2020-2023  润新知