主题:改错题也不会。。帮帮忙
酱爆鱼虾蟹
[专家分:40] 发布于 2010-07-22 09:05:00
下面的函数声明有什么错误
int f(int a,int b=0,int c)
没想到就这么点点程序也有问题啊?
回复列表 (共6个回复)
沙发
咖喱炒饭 [专家分:210] 发布于 2010-07-22 14:32:00
缺省参数要放在后面,如果默认参数是0,缺省参数是X,只能00XX,不能0xx0
板凳
chunhuangzi [专家分:0] 发布于 2010-08-06 22:12:00
[quote]
缺省参数要放在后面,如果默认参数是0,缺省参数是X,只能00XX,不能0xx0
[/quote]
一起学习了。
3 楼
wksuper [专家分:660] 发布于 2010-08-06 23:14:00
这个太不人性化了,算不算C++的bug,以后的标准有可能改掉这个限制吗?
4 楼
eastcowboy [专家分:25370] 发布于 2010-08-07 03:53:00
[quote]以后的标准有可能改掉这个限制吗?[/quote]
答案是:基本不可能。
默认参数之后的参数也必须有默认参数。如果不是这样的话,假设有:
int f(int a,int b=0,int c,int d=0)
然后我写
f(10, 20, 30);
那到底是哪个参数被省略了呢?是b还是d?编译器无法做出正确判断。
5 楼
cgl_lgs [专家分:21040] 发布于 2010-08-07 12:35:00
除非C变得象FORTRAN那样。允许:
f(1=10,3=20,4=30);
这种方式调用:)
6 楼
龙母绘龙 [专家分:50] 发布于 2010-08-08 21:49:00
支持上面几位楼主的意见
我来回复