以下三个函数属于重载函数。
重载函数要求:(满足一个就算)
1.参数类型不同
2.参数位置不同
3.参数个数不同
注意:不以返回值类型作为判断重载函数的标准
如果这个时候调用add(1,2);
编译时是不会通过的。
编译器对函数的编译有三个过程
1.找到所有匹配的函数名
2.进行参数的精确匹配,通过默认参数匹配或者默认类型转换
3.如果没有符合要求的参数,无论是参数个数或者是参数的类型,匹配失败,没有这个函数
如果匹配到多个相同的符合条件的函数,则出现二义性,编译不通过。
正因如此,上面的函数放在一起编译时通过不了的,
如果只保留含默认参数的函数,以及有占位参数的函数------可以
如果只保留一般函数,以及有占位参数的函数----------可以
如果只保留一般函数,以及有默认参数的函数----------不可以
因此一般函数是不能与有默认参数的函数一起使用的,编译器会报错,存在二义性