| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1713 人关注过本帖
标题:函数的默认参数值
只看楼主 加入收藏
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
结帖率:70%
收藏
 问题点数:0 回复次数:5 
函数的默认参数值
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);
这个有为什么是正确的呢?
2016-09-08 07:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
不知所云,你直接贴代码吧

程序代码:
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);
这个有为什么是正确的呢?
单独而言,前者是错误的,后者是正确的

2016-09-08 08:12
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
收藏
得分:0 
单独而言,前者是错误的,后者是正确的
—为什么前者错误,后者正确呢?
2016-09-08 09:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 3楼 蛤蟆001
因为 void fun( int x=1,int y); 中“缺省值”必须在最后,这是标准规定的
如果缺省值不在最后,你怎么调用它? fun( , 123 ) 吗?
2016-09-08 10:20
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
收藏
得分:0 
函数可以将其全部或者部分参数声明为带默认值,但带默认值的参数只能放在参数表的最后。这是因为,系统进行参数匹配时是依照从前往后的顺序,如果中间参数有默认值,它就无法判断哪些参数使用默认值.
-----------这句话对吗????
2016-09-08 13:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 5楼 蛤蟆001
应该正确吧
2016-09-08 14:29
快速回复:函数的默认参数值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045951 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved