c++之带默认形参值的函数
先来个例子:
 #include <iostream>
 using namespace std;
 int sub(int x=,int y=){
     return x+y;
 }
 int main(){
     //freopen("D:\\input.in","r",stdin);
     //freopen("D:\\output.out","w",stdout);
     cout<<sub(,)<<endl;//
     cout<<sub()<<endl;//
     cout<<sub()<<endl;//
     return ;
 }
需要注意的地方:
1.若函数具有多个形参,则默认形参值必须自右向左连续地定义,并且在一个默认形参值的右边不能有未指定默认值的参数。这是由于c++语言在函数调用时参数是自右向左入栈这一约定决定的。
eg:int f(int a, float b=5.0, char c='c');
2.在调用一个函数时,如果省去了某个实参,则直到最右端的所有实参都得省去(当然,与其对应的形参要有默认值)。
eg:int f(int a, float b=5.0, char c='c', int d=10); f(9,4.5) <=> f(9,4.5,'c',10).
3.默认形参值的说明必须出现在函数调用之前。而且,如果存在函数原型,则形参的默认值应在函数原型中指定;否则在函数定义中指定。另外,若函数原型中已给出了形参的默认值,则在函数定义中不得重复指定,即使所指定的默认值完全相同也不行。
eg:
 #include <iostream>
 using namespace std;
 int sub(int x=,int y=);
 int main(){
     //freopen("D:\\input.in","r",stdin);
     //freopen("D:\\output.out","w",stdout);
     cout<<sub(,)<<endl;//
     cout<<sub()<<endl;//
     cout<<sub()<<endl;//
     return ;
 }
 int sub(int x,int y){
     return x+y;
 }
4.在同一个作用域,一旦定义了默认形参值,就不能再定义它。
5.如果几个函数说明出现在不同的作用域内,则允许分别为它们提供不同的默认形参值。
eg:
 #include <iostream>
 using namespace std;
 int sub(int x=,int y=);
 int main(){
     //freopen("D:\\input.in","r",stdin);
     //freopen("D:\\output.out","w",stdout);
     int sub(int x=,int y=);
     cout<<sub()<<endl;
     return ;
 }
6.对形参默认值的指定可以是初始化表达式,甚至可以包含函数调用。
eg:int f(int a, float b=5.0, char c='c', int d=sub(20,15));
7. 在函数原型给出了形参的默认值时,形参名可以省略。
eg:int f(int, float=5.0, char='c', int=sub(20,15));
c++之带默认形参值的函数的更多相关文章
- C++带参数默认值的函数
		
定义形式: void fun(int a = 1 ,int b = 2 ,int c = 3 ,int d = 4){ //函数定义 cout<<"a="<< ...
 - ES6—带默认值的函数参数及其作用域
		
在学习ES6函数一章时,发现了一个有意思的现象,原文描述如下: 这段话主要state了3个事实: ①函数参数有默认值时,会在声明初始化阶段形成一个单独的作用域 ②这个作用域在初始化结束后消失 ③没默认 ...
 - C++——带默认参数值的函数
		
函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认参数值. ,) { return x + y;} int main() { add(,);//10+20 a ...
 - (3)什么是函数(函数的定义、形参、实参、默认形参、可变长函数args|kwargs)
		
什么是函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需调用其函数名即可 1.减少重复代码 2.使程序变的可扩展 3.使程序变得易维护 定义函数的语法 形参 主要的作 ...
 - python定义函数时的默认返回值
		
python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None, 即隐式返回语句: return None 执行如下代码 def now(): prin ...
 - 【c++】类中带默认参数的函数
		
反思两个问题 1. 带默认参数的函数,为何声明.定义不能同时有参数? 2. 带默认参数的函数, 为何带默认参数的参数靠后站? 上程序 #include <iostream> #includ ...
 - js课程 2-7 带默认参数的函数怎么写
		
js课程 2-7 带默认参数的函数怎么写(注意参数顺序) 一.总结 一句话总结:默认参数一定要放在最后面,而且还有注意你调用参数的时候给参数的顺序习惯.直接加个等于号就可以是默认参数.function ...
 - php课程 3-12 带默认参数的函数怎么写
		
php课程 3-12 带默认参数的函数怎么写 一.总结 一句话总结:多看学习视频啊 1.带默认参数的函数怎么写? 直接等于号接默认参数,和js里面一模一样 2.带默认参数的函数的注意事项是什么? 默认 ...
 - python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象
		
今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo( ...
 
随机推荐
- Web 漏洞分析与防御之 XSS(一)
			
原文地址:Web 漏洞分析与防御之 XSS(一) 博客地址:http://www.extlight.com 一.全称 跨站脚本攻击(Cross Site Scripting) 二.原理 通过在网站中的 ...
 - requireJS多页面应用实例
			
本文是requireJS的一些知识点的总结,配上多页面应用中的实例分析. 本案例的目录结构如下: requireJS API的三个主要函数:define(创建模块),require(加载模块),con ...
 - spring装载配置文件失败报错:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException
			
Tomcat容器启动失败,找到 debug日志一看: Context initialization failed org.springframework. beans.factory.xml.XmlB ...
 - 软件设计----LisKov替换原则(LSP)
			
LisKov替换原则的定义:一个软件实体如果使用的是一个基类的话,一定适用于其子类,而且根本不能觉察出基类对象和子类对象的区别. 1)怎么理解上面的概念?就是我们程序设计的子类型能够完全替换父类型,而 ...
 - FPGA设计中的float
			
在通常的设计中,不建议使用浮点数计算,因为浮点数计算会消耗FPGA大量的逻辑单元.但很多情况下,又需要使用浮点数进行计算提高精度. 所以需要有合适的方法计算浮点运算. 正常情况下FPGA只能以整形数据 ...
 - [模板]LCA的倍增求法解析
			
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...
 - Zookeeper--分布式锁和消息队列
			
在java并发包中提供了若干锁的实现,它们是用于单个java虚拟机进程中的:而分布式锁能够在一组进程之间提供互斥机制,保证在任何时刻只有一个进程可以持有锁. 分布式环境中多个进程的锁则可以使用Zook ...
 - 20165226 实验三  敏捷开发与XP实践
			
实验三 敏捷开发与XP实践 实验目的 一.安装alibaba 插件,解决代码中的规范问题.在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功 ...
 - Win10怎么以管理员身份运行CMD命令提示符
			
[方法一] 我们可以在Windows10系统的开始菜单上,单击鼠标右键,这时候出现的菜单中,我们选择命令提示符(管理员)点击打开这样即可. 2 这样打开以后,大家可以看到命令提示符界面中显示管理员:命 ...
 - lnmp环境应用实践
			
LNMP 用户通过浏览器输入域名请求nginx web服务,如果请求时静态资源,则由nginx解析返回给用户:如果是动态请求(.php结尾),那么nginx就会把它通过FastCGI接口(生产常用方法 ...