默认实参需要注意的几个地方
2015-07-07 09:48
495 查看
1.默认实参作为形参的初始值出现在形参列表中。我们可以为一个或多个形参定义默认值,不过需要注意一点的是,一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值;
2.对于函数声明来说,一般是只对函数声明声明一次,并且将这个声明放在头文件中;但是C++中也允许对函数进行多次声明。但是需要注意的是,在给定的作用域中一个形参只能被赋予一次默认实参
这个可以详细地说一下,因为对于普通函数来说,你声明多次都是合法的;请看下面的代码:void printNum1(int a ); void printNum1(int a ); void printNum1(int a ); void printNum2(int b); void printNum1(int a ) { cout << a << endl; } void printNum2(int b) { cout << b << endl; } int main( ) { int a = 66; printNum(a); return 0; }
这段代码可以通过编译器编译,这段代码也是合法的;但是当我们对带有默认实参的函数进行类似的声明时,情况有些不同;
void printNum(int a = 99); void printNum(int a = 99); void printNum(int a = ); void printNum2(int b = 66); void printNum(int a = 99) { cout << a << endl; } void printNum2(int b = 66) { cout << b << endl; } int main( ) { int a = 66; printNum(a); return 0; }
这段代码编译就出现了问题,除了第一个printNum的声明外,其他声明都认为是重复声明;这与第二点中的“在给定的作用域中一个形参只能被赋予一次默认实参”是相符的,即使被赋予的默认实参值是同一个值,编译器也认为你对形参进行了第二次的默认实参赋值,所以这里编译不过。
但是如果你在声明该函数的时候却可以定义其他形参的默认实参值,当然要保证这个被指定默认实参的形参后面都已经被默认指定了实参(有点绕口。。。)。
类模板中的默认类型的使用和默认实参使用方法类似。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解
- VisualStudio 使用Visual Leak Detector检查内存泄漏