函数重载

1.函数重载概念ios

函数重载(Function Overload)函数

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

当函数名和不一样的参数搭配时函数的含义不一样3d

2 .函数重载的判断标准 code

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

参数个数不一样 blog

参数类型不一样 ci

参数顺序不一样 编译器

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

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

 

 

相关文章
相关标签/搜索