- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 函数详解
理解如何将参数传递给函数
剖析引用
将引用传递给函数
返回引用
使用独立引用
重载函数
使用默认的函数参数
重载函数时要避免多义性
本章主要内容
1
12
2
12
6.1 传递参数的方法
通常情况下,计算机语言有两种方法将参数传递给子例程。第一种方法就是值调用(call-by-value)。该方法将实参的值复制到子程序的形参中。因此,子程序形参的变化对用于调用它的实参没有任何影响。引用调用(call-by-reference)是子 程序传递参数的第2种方法。该方法中,将实参的地址(不是其值)复制到形参中。在子例程中,该地址用于访问调用中指定
本讲将继续分析函数。讨论C++中最重要的3个与函数相关的主题:引用、函数重裁和默认参数。这些功能大大地扩展了函数的功能。引用是一种隐式的指针。函数重裁允许采用两种或多种方式实现函数,每种方法都执行独立的任务。函数重载是C++支持多态性的一种方法。使用默认参数,就可以为形参指定一个值,在没有指定相应的实参时将自动使用这个默认值。
首先介绍将参数传递给函数的两种方法,以及这些方法的含义。要理解引用就需要理解参数的传递。
3
12
一、 C++如何传递参数
的实参。也就是说,对形参的修改会影响用于调用子程序的实参。
二、使用指针创建引用调用
Chapter 6 Exm1
即使C++默认的参数传递方法是值调用,也可以通过将参数的地址(指针)传递给函数来手动创建引用调用。然后,就可以修改函数外部的实参的值。
默认情况下,C++使用值调用来传递参数。也就说函数内部的代码不能改变用于调用函数的参数。到目前为止本书中的所有程序都使用值调用方法。
Chapter 6 Exm2
6.2 引用参数
4
12
虽然使用指针运算符就可以手动获得引用调用,但是这种方法很笨拙。首先,它必须通过指针执行所有操作。其次,它需要在调用函数时要记住传递参数的地址(而不是参数的值)。有幸的是,在C++中可以通知编译器为某个函数的一个或几个形参自动使用引用调用,而不是值调用。可以使用引用参数(reference parameter)来实现。在使用引用参数时,就会自动将实参的地址(不是值)传递丝函数。在函数中,对引用参数操作被自动解除引用,因此不需要使用指针运算符。
通过在函数声明中在参数名称前加&就可以声明引用参数。对引用参数的操作会影响用于调用函数的参数,而不是引用参数本身。
Chapter 6 Exm3
C语言不支持引用。因此,C语言中创建引用调用的唯一方法就是使用指针。
Chapter 6 Exm4
一、返回引用
5
12
函数可以返回引用。在C++编程中,引用返回值有几种用法。当函数返回引用时,它返回的是指向返回值的一个隐含的指针。这就产生了一种让人惊讶的可能性:函数可以用于赋值语句的左侧!
Chapter 6 Exm5
返回引用时,请注意引用的对象不要超出作用域!
Chapter 6 Exm6
二、独立引用
C++中包括引用主要是为了支持引用调用的参数传递方式和用作函数返回类型,但是也可以声明一个独立的引用变量。这被称为独立引用(independent reference)。因为独立引用容易混淆并破坏程序结构,所以参数的引用变量是很少使用的。说明了这个情况后,来简要地介绍一下独立引用。Chapter 6 Exm7
6
12
三、使用引用时的几个限制
使用独立引用是不明智的,因为没有必要,并且还容易使代码出现混乱。一个变量有两个名称会造成混乱的局面。
不能引用引用变量。
不能创建引用数组。
不能创建指向引用的指针。也就是说不能将&运算符用于引用
7
12
6.3 函数重载
C++中两个或多个函数在参数声明不相同的情况下,就可以使用同一个名称。在这种情况下,使用相同名称的函数就被重载了,这个过程就是函数重载。函数重载是C++实现多态性的一种方法。概括地说,要重裁函数,只需声明它的不同版本。编译器则会处理剩余的工作。但是必须遵守一个重要的限制条件:每个重载函数的参数类型或数量必须不同。两个函数只是在返回类型上不同是不够的。它们必须有不同的参数数量或类型(返回类型不是在所有的情况下都能提供足够信息,以使C++判断使用哪个函数)。当然,重载函数的返回类型也可以不同。调用重载函数时,就会执行形参与实参相匹配的那个函数。
Chapter 6 Exm8
函数重载支持“一个接口多种方法”的多态性概念
Chapter 6 Exm9
函数重载的价值就是允许使用相问的名称访问相关函数组。
8
12
函数重载的另一个优点就是可以定义相同函数的略为不同的版本,专门用于它们要处理的数据类型。(体现效率)
只在形参和实参之间不能直接匹配时才发生自动转换,否则使用定义的重载函数。
Chapter 6 Exm10
自动
您可能关注的文档
- 代数和差分方程模型教程.pptx
- 带电粒子在电磁场中运动问题协变形式下的作用量原理教程.pptx
- 贷贷平安产品培训教程.pptx
- 戴比尔斯案例教程.pptx
- 戴克伊GD&T基础教程.pptx
- 单纯形法FINAL教程.pptx
- 单店商品运营教程.pptx
- 单管共射放大电路仿真教程.pptx
- 单文档和多文档教程.pptx
- 单细胞测序技术教程.pptx
- 实施指南(2025)《JB_T 12842-2016空调系统用辐射换热器》.pptx
- 实施指南(2025)《JB_T 12843 - 2016 离心式制冷剂压缩机解读》.pptx
- 实施指南(2025)《JB_T 12851-2016柴油机喷油泵 等压出油阀偶件》.pptx
- 实施指南(2025)《HJ 804-2016土壤 8种有效态元素的测定 二乙烯三胺五乙酸浸提-电感耦合等离子体发射光谱法》.pptx
- 实施指南(2025)《HJ600-2011水质梯恩梯、黑索今、地恩梯的测定气相色谱法》.pptx
- 实施指南(2025)《JB_T 6118 - 2016 沉降过滤离心机解析》.pptx
- 实施指南(2025)《HJ 811-2016水质 总硒的测定 3,3'-二氨基联苯胺分光光度法》.pptx
- 实施指南(2025)《HJ 814-2016水和土壤样品中钚的放射化学分析方法》.pptx
- 实施指南(2025)《HJ19-2011环境影响评价技术导则生态影响》.pptx
- 实施指南(2025)《HJ605-2011 土壤挥发性有机物检测标准解读》.pptx
最近下载
- 运动系统的教学课件.ppt VIP
- 院校建立菜鸟驿站可行性报告范本模板.docx VIP
- 考研真题练习 沈阳工业大学801机械设计历年考研真题汇编.docx VIP
- 安全风险管控及隐患排查治理全套台账清单.doc VIP
- 成人体外膜肺氧合技术操作规范(2024最新版)PPT课件.pptx VIP
- 任务一 曲轴、凸轮轴位置传感器结构和工作原理.pptx VIP
- 集电线路35kv电缆敷设施工方案.pdf VIP
- 新概念英语第3册完美笔记.doc VIP
- 安徽省合肥市第四十八中学2024-2025学年九年级上学期化学期中模拟试题.docx VIP
- AI-HCCDA笔试考试复习题库(含答案).docx VIP
文档评论(0)