注册 登录
编程论坛 C++教室

函数的默认参数值

蛤蟆001 发布于 2016-09-08 07:37, 1810 次点击
void fun(int x,int y=0);
void fun(int x=1,int y=0);

void fun (int x,int y=0);
void fun (int x,int y=1);
为什么前两个函数式子声明合法,而后两个却是错误的呢?
再比如说:
  void fun (int x, int y=0);
  void fun( int x=1,int y);
这个有为什么是正确的呢?
5 回复
#2
rjsp2016-09-08 08:12
不知所云,你直接贴代码吧

程序代码:
void fun(int x,int y=0);
void fun(int x=1,int y=0);

void fun (int x,int y=0);
void fun (int x,int y=1);
为什么前两个函数式子声明合法,而后两个却是错误的呢?
前两个,单独都是正确的,放在一起不是重载,就是重复定义错误
后两个,和前面一样

再比如说:
  void fun (int x, int y=0);
  void fun( int x=1,int y);
这个有为什么是正确的呢?
单独而言,前者是错误的,后者是正确的

#3
蛤蟆0012016-09-08 09:32
单独而言,前者是错误的,后者是正确的
—为什么前者错误,后者正确呢?
#4
rjsp2016-09-08 10:20
回复 3楼 蛤蟆001
因为 void fun( int x=1,int y); 中“缺省值”必须在最后,这是标准规定的
如果缺省值不在最后,你怎么调用它? fun( , 123 ) 吗?
#5
蛤蟆0012016-09-08 13:44
函数可以将其全部或者部分参数声明为带默认值,但带默认值的参数只能放在参数表的最后。这是因为,系统进行参数匹配时是依照从前往后的顺序,如果中间参数有默认值,它就无法判断哪些参数使用默认值.
-----------这句话对吗????
#6
rjsp2016-09-08 14:29
回复 5楼 蛤蟆001
应该正确吧
1