码迷,mamicode.com
首页 > 其他好文 > 详细

函数重载

时间:2018-09-24 00:43:13      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:含义   bubuko   定义   不同   span   std   通过   类型   二义性   

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 \n",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;
}

技术分享图片

 

 技术分享图片

 

  

函数重载

标签:含义   bubuko   定义   不同   span   std   通过   类型   二义性   

原文地址:https://www.cnblogs.com/Liu-Jing/p/9694004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!