缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时 ,如果没有指定实参,则采用默认值,否则使用指定的实参。

void Test(int a=0)
{cout<<a<<endl;
}int main()
{Test();//没有传参时,使用参数的默认值Test(10);//传参时,使用指定的实参
}

全缺省参数:

void Test(int a=0,int b=0,int c)
{cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;cout<<"c="<<c<<endl;
}

半缺省参数:

void Test(int a,int b=0,int c)
{cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;cout<<"c="<<c<<endl;
}

注意事项:
1.带缺省值的参数必须放在参数列表的末尾;
2.缺省参数不能同时在函数声明和定义中出现,只能二者择其一;
3.缺省值必须是常量或者全局变量;
4.C语言不支持;
5.调用函数时,如果略去了一个参数传递,则略去后续所有参数传递,调用时将参数从左到右逐一传递给形参;
6.缺省参数不能出现在函数指针中,函数引用以及typedef中;
7.不同作用域的声明中定义的缺省参数是独立且互不影响的;
8.同一作用域的声明中不能重定同一参数的缺省值;

void f(int,int)
void f(int,int=7)
void f(int=7,int)void m()
{f(4);//f(4,7)void f(int,int);//进入新的作用域,f现在变成不带缺省值f(4);//错误,参数数目不符f(int,int=5);//正确f(4);//等价于f(4,5)void f(int,int=5);//错误,不能重复定义
}

类似的规则也适用于成员函数。不过不同的一点是,缺省值的作用域范围是整个translation unit,为了不违反One Definition Rule,每个translation unit中指定的缺省值不能不同。

缺省值不一定是个常量,也可以是表达式,所以也可以是全局变量或者是函数返回值,但是缺省值不能是局部变量或者是非静态成员函数的返回值,也不能是this.

缺省值的表达式中也不能引用其他参数,比如:int f(int (&a)[10]),int b=sizeof(a);

虚成员函数的缺省值是静态绑定的。而且派生类不会继承基类的缺省参数。

关于c++中缺省问题的总结相关推荐

  1. keil5 MDK 中缺core_cm3.o 报错 解决办法

    关于keil5 MDK 中缺core_cm3.o 报错,根据在网上找到资料,更改环境变量(tmp和tempd位置,在电脑右键属性>高级系统设置>环境变量 %USERPROFILE%改为c: ...

  2. flash as3做事件处理中缺省行为

    缺省行为(Default behaviors) 当事件发生时,flash播放器会自动显示与此事件相关的行为,因为这个行为是由Flash播放器自动显示的,所 以这样的行为称为缺省行为. 例如,在一个输入 ...

  3. java中缺省包_Java 中的默认包问题

    起因 今天看< Java 编程思想>第六章的时候看到这样一句话: 一定要记住,相同目录下的所有不具有明确 package 声明的文件,都被视作是该目录下默认包的一部分. 以前没有深入了解过 ...

  4. 面试官:Java中 serialVersionUID 的作用是什么?举个例子说明

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料!来源:blog.csdn.net/andy_zhang200 ...

  5. mybatis中useGeneratedKeys用法--插入数据库后获取主键值

    前言:今天无意在mapper文件中看到useGeneratedKeys这个词,好奇就查了下,发现能解决我之前插入有外键表数据时,这个外键获取繁琐的问题,于是学习敲DEMO记录    在项目中经常需要获 ...

  6. matlab中矩阵的累加,累加和与累乘积在matlab中-read.ppt

    累加和与累乘积在matlab中-read 多项式 多项式表达方式的约定 创建多项式的方法 多项式运算函数 常用列表参阅表2-10 多项式表达方式的约定 MATLAB约定降幂多项式P(x)=a0xn+ ...

  7. java classname.this_java 中 类名.this与类名.class

    1.this指的是当前正在访问这段代码的对象,当在内部类中使用this指的就是内部类的对象, 为了访问外层类对象,就可以使用外层类名.this来访问. 一般也只在这种情况下使用这种 示例代码,请注意第 ...

  8. Matlab优化函数中options选项的修改

    关于非线性优化fminbnd函数的说明(仅供新手参考) 初学matlab优化,迭代中止后,经常一头雾水.参看帮助后仍似懂非懂.下面关于fminbnd函数的说明(也可作为fmincon函数的参考)对于新 ...

  9. mac如何导入python第三方库_Mac系统中python idle导入第三方模块成功,ecplise导入python第三方模块失败解决方法...

    遇到一个比较纠结了4个月的问题,一直没有在意,今天实在忍受不了,尝试各种解决办法,终于把这个烦人的问题完美解决,不敢独享,写出来和各位大神共享. 问题:在mac OSx操作系统下,安装了python第 ...

最新文章

  1. 每日一皮:所以重点到底是啥...
  2. BZOJ 2957: 楼房重建
  3. 超干货 | 一线从业者实践案例大分享:3个tips实现用户增长
  4. Linux shell利用sed如何批量更改文件名详解
  5. java 什么时候进行垃圾回收_java什么时候进行垃圾回收,垃圾回收的执行流程
  6. Silverlight中使用MVVM(9)-绑定Enum类型数据
  7. 2018年线程与多线程面试必知必会内容
  8. app调用webapi时候出现读取不到session的问题
  9. chrome 通过插件来监控zabbix
  10. Range的学习笔记
  11. hasp运行不成功_HASP加密狗驱动程序没有安装成功如何解决
  12. VMware ESXi 6.7 安装LEDE
  13. 实时帧数手机_实时音频的混音在视频直播中的技术原理和实践总结
  14. 大数据课程30天掌握 spark内存计算(python )-徐培成-专题视频课程
  15. 神秘的java Https
  16. 【C/C++】【面经】2022 网易互娱面经( 游戏客户端方向 )(更新:一面;二面;)
  17. uoj 246. 【UER #7】套路
  18. 10个常用的JS工具库
  19. DocArray 0.21.0版本发布!新增OpenSearch后端存储,支持Redis后端存储的多语言文本搜索!...
  20. 五个值得推荐的英语学习APP,你用过哪些

热门文章

  1. 字符串匹配算法题:病毒感染监测
  2. 蓝牙资讯|苹果获得智能戒指专利,可用于交互 AR / VR 头显设备
  3. 手机视频性能测试软件,手机看视频拒绝卡顿!三款常见加速软件对比实测
  4. 有道云笔记网页剪chrome登录不上,反复登录问题
  5. 上课笔记--台大政治学基础之美国选举制度与意识形态
  6. Android向通讯录添加联系人的一般方法
  7. Python爬虫之定时给TA发送微信消息(十七)
  8. 关于idea中maven jar包冲突的解决方法
  9. before you can run vmware several modules must be compiled VMware Station 启动报错
  10. Vim插件#Vim Project项目管理