C++带参数默认值的函数
定义形式:
void fun(int a = 1 ,int b = 2 ,int c = 3 ,int d = 4){ //函数定义
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
cout<<"d="<<d<<endl;
}
调用方式:
fun(); //a=1,b=2,c=3,d=4;
fun(-1); //a=-1,b=2,c=3,d=4;
fun(-1,-2); //a=-1,b=-2,c=3,d=4;
fun(-1,-2,-3); //a=-1,b=-2,c=-3,d=4;
fun(-1,-2,-3,-4); //a=-1,b=-2,c=-3,d=-4;
带默认值和不带默认值混合的情况:
void fun(int a ,int b = 2 ,int c = 3 ,int d = 4); // 正确
void fun(int a = 1 ,int b ,int c = 3 ,int d = 4) // 错误
不带默认值的参数都应该放在参数列表的左边,有默认值的参数都应该放在参数列表的右边
声明和定义不能同时有默认值:
void fun(int a=1,int b=2,int c=3,int d=4);
void fun(int a=1,int b=2,int c=3,int d=4{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
cout<<"d="<<d<<endl;
}
编译出错,当又有声明又有定义时,定义中不允许默认参数。
函数声明起决定性作用:
void fun(int a,int b,int c,int d);
void main(){
fun();
}
void fun(int a=1,int b=2,int c=3,int d=4){
cout<<"a="<<a<<endl<<"b="<<b<<endl<<"c="<<c<<endl<<"d="<<d<<endl;
}
C++带参数默认值的函数的更多相关文章
- ES6函数参数默认值作用域的模拟原理实现与个人的一些推测
一.函数参数默认值中模糊的独立作用域 我在ES6入门学习函数拓展这一篇博客中有记录,当函数的参数使用默认值时,参数会在初始化过程中产生一个独立的作用域,初始化完成作用域会消失:如果不使用参数默认值,不 ...
- C++ 函数的重载和参数默认值
函数的重载和参数默认值视频教程 函数的重载注意事项: 只会根据三项内容进行重载:参数的个数.参数的类型.参数的顺序 参数默认值: 参数的默认值可以在函数的定义中也可以在函数的声明中,但不能同时有 从第 ...
- ES6笔记之参数默认值(译)
原文链接:http://dmitrysoshnikov.com/ 原文作者:Dmitry Soshnikov 译者做了少量补充.这样的的文字是译者加的,可以选择忽略. 作者微博:@Bosn 在这个简短 ...
- ES6—带默认值的函数参数及其作用域
在学习ES6函数一章时,发现了一个有意思的现象,原文描述如下: 这段话主要state了3个事实: ①函数参数有默认值时,会在声明初始化阶段形成一个单独的作用域 ②这个作用域在初始化结束后消失 ③没默认 ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- java函数参数默认值
java函数参数默认值 今天,需要设定java函数参数的默认值,发现按照其它语言中的方法行不通 java中似乎只能通过函数的重载来实现 函数参数默认代码
- es6(三):es6中函数的扩展(参数默认值、rest参数、箭头函数)
1.函数可以设置参数默认值 function test1(x,y=1){ console.log(x,y) } test1(10)//10 1 2.rest参数:形式为...变量名 function ...
- ES6学习 --函数参数默认值与解构赋值默认值
1. ES6的解构ES6中引入了解构赋值的操作,其作用是:将值从数组Array或属性从对象Object提取到不同的变量中 即分为两种情况:从数组Array中解构,以及从对象Object中解构 ①.从数 ...
- ES6 学习笔记之三 函数参数默认值
定义函数时为参数指定默认值的能力,是现代动态编程语言的标配.在ES6出现之前,JavaScript是没有这种能力的,框架为了实现参数默认值,用了很多技巧. ES6 的默认参数值功能,与其他语言的语法类 ...
随机推荐
- NSDateFormatter 问题
NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init]; NSString *inputDateStr = @&quo ...
- Chart控件的多种使用方法
花了近一周时间专门研究.net 3.5平台提供的Chart控件的使用方法,感觉该控件的功能很强大,做出的图表效果也很美观,使用方法也并不复杂.如今先讲下Chart控件的部署及一些基本使用方法. 一.安 ...
- 【M13】以by reference 方式捕捉exceptions
1.catch语句的参数有三种方式:by pointer,by value,by reference. 2.首先考虑,by pointer.这意味着抛出端必须抛出一个对象的地址.那么问题来了: 如果这 ...
- URL和DNS解析
以下内容摘自<Go Web编程>,介绍的通俗易懂. 我们浏览网页都是通过URL访问的,那么URL到底是怎么样的呢? URL(Uniform Resource Locator)是“统一资源定 ...
- Android应用插件式开发解决方法[转]
一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分 ...
- C 高级编程4 makefile 与 IO
make 与 makefile .目标的语法 目标名:依赖目标 @命令 @命令 make的命令行使用 make -f make 脚本文件 目标名 .目标的划分 demo.mk demo: gcc -c ...
- javascript关闭浏览器窗口
var opened=window.open('about:blank','_self'); opened.close(); window.open 不被阻止 .open('_blank') 然后 t ...
- Wireshark 过滤条件
做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...
- Mac Mysql5.7.11安装和卸载
初学者,被mysql的安装弄晕了,所以在此记录一下. 安装 去http://www.mysql.com/downloads/, 选择最下方的MySQL Community Edition,点击MySQ ...
- 创建eclipse新的workspace并设置workspace共享配置
一:创建新的workspace 1.File——Switch Workspace——Other 2.修改workspace路径和名称 3.修改后如下: 4.点击OK按钮后,eclipse自动重启 同时 ...