学习笔记内容来自:狄泰软件学院 唐佐林老师 的视频,十分感谢您的指导
函数重载条件:
- 参数个数不同
- 参数顺序不同
- 参数类型不同
符合其中一个条件即可重载函数
编译器调用重载函数的准则:
1.将所有同名函数作为候选者
2.尝试寻找可行的候选函数
(1)精确匹配实参
(2)通过默认参数能匹配实参
(3)通过默认类型转换匹配实参
3.函数返回值类型不能做为函数重载的依据
匹配失败:
1.最终寻找到的候选函数不唯一,则出现二义性,编译失败。比如:
int func(int a,int b,int c=0)
{
return a*b*c;
}
int func(int a,int b)
{
return a+b;
}
调用func(1,2)时出现二义性,编译失败。
2.无法匹配所有候选者,函数未定义,编译失败。
PS:重载函数之间是相互独立的函数,取地址时地址不一样