面试题答案
一键面试- 是否构成函数重载:
- 这两个函数构成函数重载。函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数或参数类型不同)的函数。在这两个函数声明中,
void func(int a, int b = 10);
有两个参数,其中第二个参数有默认值,而void func(int a);
只有一个参数,参数列表不同,所以构成函数重载。
- 这两个函数构成函数重载。函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数或参数类型不同)的函数。在这两个函数声明中,
- 调用
func(5);
的情况及原因:- 调用
func(5);
时,会调用void func(int a);
这个函数。原因是当存在函数重载且调用函数时提供的实参数量刚好与某一个函数的形参数量匹配时,编译器会优先选择参数完全匹配的函数。虽然void func(int a, int b = 10);
可以通过默认值来接受一个实参,但编译器会优先选择参数数量直接匹配的void func(int a);
函数,以避免不必要的歧义。如果不存在void func(int a);
这个函数,编译器才会选择void func(int a, int b = 10);
并使用默认值来调用。
- 调用