函数重载:仅根据函数返回值类型不能实现重载
函数的两个要素:参数与返回值。
如果同名函数的参数不同(包括类型、顺序不同),那么容易区别出它们是不同的函数。
如果同名函数仅仅是返回值类型不同,有时可以区分,有时却不能。例如:
void Function(void);
int Function (void);
上述两个函数,第一个没有返回值,第二个的返回值是int 类型。如果这样调用函数:
int x = Function ();
则可以判断出Function 是第二个函数。
问题是在C++/C 程序中,我们可以忽略函数的返回值。在这种情况下,编译器和程序员都不知道哪个Function 函数被调用。
所以只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符。
void Function(void)
{};
int Function(void)
{};
注:仅仅根据函数返回值不能重载函数,仅能根据不同的形参列表,包括参数个数和类型;
仅仅根据参数返回类型编译器会发出错误警告,在编译时期就提示错误
---------------------
原文:https://blog.csdn.net/peng864534630/article/details/77967446?utm_source=copy
=======================================================================================
下面也是这个问题但是这个人的解释没仔细看:
IntelliSense 无法重载仅按返回类型区分的函数 - 无知人生,记录点滴 - CSDN博客
https://blog.csdn.net/testcs_dn/article/details/26159141