c++里,,这两个为什么不能做为重载函数?

intf(int,int=0,double=0)voidf(intdouble)后面一个是voidf(int,double)少了一个逗号。。... int f( int ,int=0,double=0)
void f( int double)
后面一个是void f( int ,double) 少了一个逗号。。
展开
 我来答
ahcc08
2014-05-20 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51936
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
int f( int ,int=0,double=0)
void f( int double)

因为你的int f( int ,int=0,double=0) 这个函数是可以这样调用的
f(8);你的第二个和第三个参数都是有默认值的,是可以省略的。

所以当你写了f(8);这样的语句时,系统并不知道你要调用哪个函数
因此你的那两个函数是不能同时存在的。
松甜恬0Je4ba
2014-05-20 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3393万
展开全部
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。

所以,可以啊 ?怎么提示不对?报什么错误?
追问
如果我运行的就是f(8,2)这种函数 系统就会报错。
ambiguous call to overloaded function
楼下说对了
追答
噢  我明白了  这是因为 2那个既可以认为是int类型,也可以认为是double类型,而int类型可以隐式转换成double类型。

这样调用试试

f(8,(int)2);

或者
f(8,(double)2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式