是有效的
int func();
float func(int x);
Run Code Online (Sandbox Code Playgroud)
我知道只有返回类型没有模板才能重载,但这是否有效?
是的.重载规则是参数需要具有不同的类型和/或数量; 当满足时,各种过载的返回类型可以不同.给定实际参数,编译器可以确定要调用的重载.
只有通过返回类型重载是无效的,因为编译器无法根据返回值做出选择; 假设你有过载int f()和float f(),和你做
(void)f();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,没有人知道f你打算打电话给谁.(除非对标准中指定的类型有任意偏好,但没有,并且很难找到合理的类型.)