[c/c++]函数参数缺省值
2011-09-29 10:52
381 查看
参数缺省值只能出现在函数的声明中,而不能出现在定义体中。
例如:
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,产生二义性
例如:
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,产生二义性
相关文章推荐
- 【C++】函数缺省参数的作用
- c++中的命名空间、函数重载、缺省参数
- C++中的作用域运算符和函数参数缺省值知识
- c++ 函数缺省参数
- C++ 缺省参数 重载 C++编译器的函数名修饰规则
- c++函数缺省参数
- 第八章 C++函数的高级特性(8.3 参数的缺省值 8.4 运算符重载 8.5 函数内联)
- 【C++基础之十四】函数的缺省参数
- c++动态绑定与静态绑定中的函数调用与函数缺省参数
- Thinking in C++ -- 函数的缺省参数
- qt开发环境 - c++函数换名,extern 'C',缺省参数,内联
- 第一周 从C走进C++ 008 函数缺省参数
- 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板
- C++缺省参数函数简介和使用
- [c/c++]函数参数缺省值
- c++ 函数缺省参数测试示例
- C++成员函数缺省参数 示例
- c++第一节之函数重载与缺省参数
- 北大 C++ 1.7 内联函数、函数重载和函数缺省参数
- C++基础---函数的参数传递