c++中两个函数函数名相同,参数类型和参数个数也相同,但是函数类型不同,那它们是重载函数吗?

同名函数是不是要求函数类型必须相同... 同名函数是不是要求函数类型必须相同 展开
 我来答
庄政警
推荐于2018-03-10 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:885万
展开全部
这样不是重载。

函数重载要求函数的参数个数不同或者参数类型不同。

因为调用函数的时候无法确认函数的返回类型,所以仅返回类型不同的函数都可以匹配,这样就造成二义性,所以仅仅是返回类型不同是不能重载的,

比如有
int f(int a)
{
return a+2;
}
float f(int a)
{
return a/3.0;
}

int main()
{
f(6); //该调用哪个呢?
}
867773467
推荐于2017-11-25 · TA获得超过180个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:148万
展开全部
函数重载是是根据函数的参数列表区分函数的版本,返回值不同是不能区分的。
比如 int fun( int a,int b);
在编译的时候,编译器编译函数,生成一个类似"_fun_int_int"的名称放在库中,以便程序调用的时候使用。
如果你想重载void fun( int a,int b);
生成的函数名称也是"_fun_int_int"
函数在库中的名称是唯一的,就像你在程序中定义变量一样。
这就算是重定义吧(姑且这么说),这时编译器该调用哪个函数?
追问
那同名函数又是怎么要求的呢
追答
函数的参数列表是重载的标识符。
int fun(int a, dobule b); //编译后生成 : _fun_int_double
int fun(int a, int b); // 编译后生成 : _fun_int_int
根据生成的名称来指定调用哪个版本的函数;
fun(1,1.2); // 进行匹配,第一个函数为最佳匹配,然后根据 _fun_int_double 找到函数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsx10110
2013-07-02 · TA获得超过8872个赞
知道大有可为答主
回答量:2369
采纳率:66%
帮助的人:3102万
展开全部
函数重载只看参数个数和类型 所以如果只是返回值相同的函数就不是重载函数了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4cb8382
2018-07-03
知道答主
回答量:1
采纳率:0%
帮助的人:855
展开全部
不是重载函数,编译器应该会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式