C++ 为什么可以';编译器是否为该函数引用找到了正确的重载?
为什么它不选择正确的重载?我得到了错误:C++ 为什么可以';编译器是否为该函数引用找到了正确的重载?,c++,C++,为什么它不选择正确的重载?我得到了错误: main.cpp:4:7:错误:新声明“int f()” main.cpp:3:6:错误:混淆旧声明“void f()” 不能按返回类型重载;仅通过参数。不能通过返回类型重载,因为: int main() { f(); // call to void f f(); // call to int returning one f(); // call to void return 0; } 都是模棱两可的 float f()
main.cpp:4:7:错误:新声明“int f()”
main.cpp:3:6:错误:混淆旧声明“void f()”
不能按返回类型重载;仅通过参数。不能通过返回类型重载,因为:
int main() {
f(); // call to void f
f(); // call to int returning one
f(); // call to void
return 0;
}
都是模棱两可的
float f() { return 0.0f; }
char f() { return 'a'; }
int i = f();
也不明确。
< P>根据C++标准,132.1float f() { return 0.0f; }
char f() { return 'a'; }
int i = f();
如果两个同名函数声明在同一范围内且具有等效的参数声明,则它们引用同一个函数
这意味着只考虑名称和参数类型;返回类型不正确
这是有意义的,因为您可以使用返回值调用函数,而忽略其返回值。如果语言设计人员允许对返回类型重载,编译器将无法在某些合法上下文中解析这些重载。您无法对返回类型重载。“这是法律”