• 函数重载


    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;
    }

     

      

  • 相关阅读:
    牛客挑战赛48C铬合金之声【Prufer序列】
    Java 基础 反射
    MDX Query mdx的基本语法和概念
    Maven 深入理解maven构建生命周期和各种plugin插件
    Java基础 String,StringBuilder,StringBuffer三者的区别
    Java基础 Java 抽象类 抽象方法
    Java 基础 final vs static
    JMX JMX(Java Management Extensions)定义
    Java 多线程 生产者消费者问题
    Java 基础 如何重写equals()
  • 原文地址:https://www.cnblogs.com/Liu-Jing/p/9694004.html
Copyright © 2020-2023  润新知