缺省参数?
在C++中,允许实参的个数与形参的个数不同。在声明函数原型时,为一个或者多个形参指定默认值,以后调用这个函数时,若省略某一个实参,c++则自动的以默认值作为相应参数的值。

实列说明:
#include<iostream>
using namespace std;

int add(int x=4,int y=7)
{
return x+y;
}
int main()
{
cout<<add(3,6)<<endl;
cout<<add(3)<<endl;
cout<<add()<<endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
运行结果:

解析:
1、程序执行cout<<add(3,6)<<endl;语句时,因为函数add(3,6)传入了两个实参,与形参的个数一值,所以此时x=3,y=6。
2、程序执行cout<<add(3)<<endl;语句时,因为函数add(3)只传入了一个实参,与形参的个数不一值,所以此时先按从左到右的顺序将实参和形参相结合,所以x=3,又因为实参个数只有一个,于是另外一个形参取默认值,所以y=7。
3、程序执行cout<<add()<<endl;语句时,因为函数add()没有传入实参,所以此时所有的形参都取默认值,于是此时x=4,y=7。

注意:
1、指定默认值的参数必须放在形参列表中的最右端。 列如:

int func(int i,int j=5,int k);
1
这样是错误的。应该改为:

int func(int i,int k,int j=5);
1
2、在函数调用时,若个实参省略,则其后的所有实参都应该省略。不允许某个实参省略后,后面的实数再指定参数。 列如:

add(,7);
1
这是错误的。

3、只需要在函数声明和函数定义中一个给出默认值即可。
---------------------

最新文章

  1. Android知识——ViewHolder的作用与用法
  2. git之install
  3. Oracle中的null
  4. Wordpress编辑器(Tinymce)在Chrome中动态修改图片大小
  5. html 特殊字符 fmt table A
  6. 标准盒模型与ie盒模型
  7. Android中两种设置全屏的方法
  8. ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
  9. [教程] Windows Server 2008 R2架设SMTP服务器发送邮件教程
  10. ECshop 二次开发模板教程4
  11. windows进程的创建方法
  12. HFile文件解析异常解决
  13. Java 微信登录授权后获取微信用户信息昵称乱码问题解决
  14. Mysql笔试题(二)
  15. awk统计文本里某一列重复出现的次数
  16. MySQL--MHA与GTID
  17. 为什么express中打开服务端只用listen即可
  18. vue的图片路径,和背景图片路径打包后错误解决
  19. CentOS systemctl命令
  20. 20155318 《网络攻防》Exp5 MSF基础应用

热门文章

  1. [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
  2. 了解一下JAVA中的NIO模块
  3. [bzoj1941][Sdoi2010]Hide and Seek_KD-Tree
  4. PHP array_intersect()
  5. keras 与tensorflow 混合使用
  6. 有趣的linux shell 命令, 跑马车
  7. LeetCode——Valid Number
  8. 一个简单的JS日期挂历脚本
  9. Java 发送短信
  10. Cash Machine(多重背包)