以下三个函数属于重载函数。

重载函数要求:(满足一个就算)

1.参数类型不同

2.参数位置不同

3.参数个数不同

注意:不以返回值类型作为判断重载函数的标准

函数的重载与带默认参数,占位参数的函数

 

如果这个时候调用add(1,2);

编译时是不会通过的。

编译器对函数的编译有三个过程

1.找到所有匹配的函数名

2.进行参数的精确匹配,通过默认参数匹配或者默认类型转换

3.如果没有符合要求的参数,无论是参数个数或者是参数的类型,匹配失败,没有这个函数

如果匹配到多个相同的符合条件的函数,则出现二义性,编译不通过。

 

正因如此,上面的函数放在一起编译时通过不了的,

如果只保留含默认参数的函数,以及有占位参数的函数------可以

如果只保留一般函数,以及有占位参数的函数----------可以

如果只保留一般函数,以及有默认参数的函数----------不可以

因此一般函数是不能与有默认参数的函数一起使用的,编译器会报错,存在二义性

相关文章: