Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522388
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类: C/C++

2010-06-11 10:49:02

参数缺省值只能出现在函数的声明中,而不能出现在定义体中。
例如:
  void Foo(int x=0, int y=0);  // 正确,缺省值出现在函数的声明中
 
  void Foo(int x=0, int y=0)    // 错误,缺省值出现在函数的定义体中
  {

  }
为什么会这样?我想是有两个原因:一是函数的实现(定义)本来 就与参数是否有缺省值无关,所以没有必要让缺省值出现在函数的定义体中。二是参数的缺省值可能会改动,显然修改函数的声明比修改函数的定义要方便。
 
如 果函数有多个参数,参数只能从后向前挨个儿缺省,否则将导致函数调用语句怪模怪样。
正确的示例如下:
void Foo(int x, int y=0, int z=0);
错误的示例如下:
void Foo(int x=0, int y, int z=0);

可 能产生的二义性:
void output( int x);
void output( int x, float y=0.0);

//output(3); //error,产生二义性
阅读(871) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-11 10:52:06

六、函数参数的默认值 (本讲重点概念) http://jwc.wfu.edu.cn/sjjpkc/cyy/jxkj/i8.htm C++允许实参个数与形参个数不同。办法是在形参表列中对一个或几个形参指 定缺省值(或称默认值)。例如某一函数的首部可用如下形式: void fun(int a, int b, int c=100) 在调用此函数时可写成fun(2,4,6),还可写成fun(2,4)。 请注意:赋予缺省值的参数必须放在形参表列中的最右端。例如: void f1(float a, int b, int c=0, char d=′a′) (正确) void f2(float a, int c=0, char d=′a′, int b) (不正确) 例6. 使用函数参数默认值的示例。(参考教材例18-7) #include //以下是对函数fun()的定义,在函数定义部分设