回 帖 发 新 帖 刷新版面

主题:改错题也不会。。帮帮忙

下面的函数声明有什么错误
int f(int a,int b=0,int c)

没想到就这么点点程序也有问题啊?

回复列表 (共6个回复)

沙发


缺省参数要放在后面,如果默认参数是0,缺省参数是X,只能00XX,不能0xx0

板凳

[quote]
缺省参数要放在后面,如果默认参数是0,缺省参数是X,只能00XX,不能0xx0
[/quote]
一起学习了。

3 楼

这个太不人性化了,算不算C++的bug,以后的标准有可能改掉这个限制吗?

4 楼

[quote]以后的标准有可能改掉这个限制吗?[/quote]
答案是:基本不可能。

默认参数之后的参数也必须有默认参数。如果不是这样的话,假设有:
int f(int a,int b=0,int c,int d=0)
然后我写
f(10, 20, 30);
那到底是哪个参数被省略了呢?是b还是d?编译器无法做出正确判断。

5 楼

除非C变得象FORTRAN那样。允许:
f(1=10,3=20,4=30);
这种方式调用:)

6 楼


支持上面几位楼主的意见

我来回复

您尚未登录,请登录后再回复。点此登录或注册