Aru*_*run 5 c++ oop overloading
请考虑以下函数定义
void fn(int a, int b)
{
//...
//...
}
void fn(int a, int b, int c = 0)
{
//...
//...
}
Run Code Online (Sandbox Code Playgroud)
在main函数中,我使用2个参数调用fn:
int main()
{
fn(10, 15);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以想知道编译器如何处理这种情况.
编译器无法知道,因而抛出错误:
prog.cpp: In function ‘int main()’: prog.cpp:15:12: error: call of
overloaded ‘fn(int, int)’ is ambiguous prog.cpp:15:12: note:
candidates are: prog.cpp:1:6: note: void fn(int, int) prog.cpp:7:6:
note: void fn(int, int, int)
Run Code Online (Sandbox Code Playgroud)
声明时不会发生错误,但在实际解决时会发生错误.
虽然您可以声明它们,但如果您使用 fn(10,15) 调用它们,您可能会收到一条错误,指出这是一次不明确的调用,因为编译器不知道您要使用哪一个。尽管这可能取决于您使用的编译器。