您的位置:首页 > 其它

函数重载概念本质

2015-06-08 19:47 302 查看
1 函数重载概念

函数重载(Function Overload)

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

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

2 函数重载的判断标准

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

参数个数不同

参数类型不同

参数顺序不同

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

两个难点:重载函数和默认函数参数混搭,重载函数和函数指针

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

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

尝试寻找可行的候选函数

精确匹配实参

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

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

匹配失败

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

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

函数重载的注意事项

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

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

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

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

当函数重载遇到函数默认参数

demo

#include <iostream>
//当函数默认参数遇上函数重载会发生什么
int func(int a, int b, int c = 0)
{
return a * b * c;
}

int func(int a, int b)
{
return a + b;
}

//1个参数的允许
int func(int a)
{
return a + b;
}

int main()
{
int c = 0;

c = func(1, 2); // 存在二义性,调用失败,编译不能通过

printf("c = %d\n", c);

printf("Press enter to continue ...");
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: