- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 引用和函数高级用法
Chapter 第1章内容回顾 C 和 C++起源 C 的优缺点 过程化程序设计和面向对象程序设计 最简单的C++程序 预习检查 引用的符号是什么? 标识内联函数的关键字是什么? 本章目标 学完本章内容以后,你将能够对C++引用,重载函数,内联函数,默认参数的函数,递归函数有个深刻的理解掌握和应用。 引用的优点和使用方法 函数 内联函数 重载函数 默认参数函数 递归函数 2-1 引用 引用的意义 学习了本节后,应该掌握: 引用的语法 用引用传递函数的方法 理解C++在函数原型中声明引用的目的 正确使用引用,避免不恰当的引用返回 明辨引用与指针的区别 2-1-1 引用的概念 引用的定义和初始化 引用是个别名 引用的初始化 引用作为目标的别名而使用,对引用的改动实际就是对目标的改动。 为了建立引用,先写上目标的类型,再加上引用运算符””,然后是引用的名字。 引用能使用任何合法变量名 2-1-2 操作引用 2-1-2 操作引用 只有在声明引用时是引用操作符,其他时候都是地址操作符 C++没有提供访问引用本身地址的方法 2-1-2 操作引用 引用一旦初始化,它就维系在一定的目标上,再也不分开 引用与指针有很大的差别,指针是个变量,可以把它再赋值成指向别处的地址,然而,建立引用时必须进行初始化并且决不会再关联其他不同的变量。 2-1-2 操作引用 试图改变引用对应的变量 2-1-3 引用的条件 若一个变量声明为T,即引用时,它必须用T类型的变量或对象,或能够转换成T类型的对象进行初始化。 double rr=1; 首先作必要的类型转换; 然后将结果置于临时变量; 最后,把临时变量的地址作为初始化的值。 所以上面的语句解释为: 2-1-3 引用的条件 由于指针也是变量,所以可以有指针变量的引用 指针也是变量,所以可以有指针变量的引用: 2-1-3 引用的条件 什么不能引用 对void进行引用是不允许的。 例如:voida=3; //error 不能建立引用的数组: 2-1-3 引用的条件 没有引用的指针和引用的引用 有空指针无空引用 引用不能用类型来初始化 2-1-4 用引用传递函数参数 传递引用给函数与传递指针的效果一样 用引用作为参数比使用指针要容易理解 用引用实现swap函数: 2-1-4 用引用传递函数参数 传递引用给函数的内存布局 2-1-4 用引用传递函数参数 引用存在的问题 隐藏错误 下面的代码在没有看到函数原型之前可能会误认为实参a和b是通过值来传递的,从而不能通过函数调用来修改它,而事实上却能够修改: 2-1-5 利用引用返回多个值 使用引用作为参数和返回值给函数的意义 函数只能返回一个值。如果程序需要从函数返回两个值怎么办 解决这一问题的办法之一是用引用给函数传递两个参数,然后由函数往目标中填入正确的值 函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本,所以提高了效率 2-1-5 利用引用返回多个值 返回值和返回引用的内存对比 2-1-5 利用引用返回多个值 注意: 如果返回不在作用域范围内的变量或对象的引用那就有问题了。这与返回一个局部作用域指针的性质一样严重 2-1-6 const 限制 传递指针和引用更大的目的是效率 传递的地址特征使得所传的参数处于随时被修改的危险之中 保护实参不被修改的办法是传递const 指针和引用 引用总是const的 如果对引用应用关键词const,其作用就是使目标成为const变量 2-1-6 const 限制 2-1-7 结构与引用 返回结构的引用 一个函数可以返回一个结构的引用和结构的指针 不要返回一个局部结构变量的引用和指针 2-2-1 内联函数 非常短的函数适合于内联 函数体会插入到发生函数调用的地方 2-2-1 内联函数 内联函数的声明 内联函数可以在一开始仅声明一次 内联函数必须在调用之前被声明或定义。因为内联函数的代码必须在被替换之前已经生成被替换的代码。 2-2-1 内联函数 2-2-1 内联函数 内联函数的函数体限制 内联函数中,不能含有复杂的结构控制语句 递归函数(自己调用自己的函数)是不能被用来做内联函数的。 内联函数只适合于只有l到5行的小函数。 2-2-1 内联函数 内联函数与宏定义 宏定义可以代替小函数定义,但是有缺陷 宏只是告诉编译器简单的替代代码,不检查参数类型, 往往造成语句的实际结果不能代表程序员的意图 宏的作用可以用内联函数代替:
您可能关注的文档
- 第二章 光弹性实验中光学基础.ppt
- 第二章 纯金属凝固.ppt
- 第二章 机械运动 运动与力 力 浮力.doc
- 第二章 培养基与种子制备设备.ppt
- 第二章 割草机及搂草机.ppt
- 第二章 热水供热系统水力计算.ppt
- 第二单元-第八课-各具特色民居.ppt
- 第二章 环境规划学理论基础.ppt
- 第二章 空气空间及领空制度.ppt
- 第二章 第二节 第二课时 离子反应及其发生条件.ppt
- 2025年云南省西双版纳州景洪市审计局招聘考前自测高频考点模拟试题附答案详解.docx
- 2025年云南省昆明市盘龙区人民政府所属事业单位招聘考前自测高频考点模拟试题及答案详解1套.docx
- 2025年云南省大理州云龙县供销合作社招聘2人考前自测高频考点模拟试题附答案详解.docx
- 2025年云南省大理州南涧县派出所招聘协(辅)警6人考前自测高频考点模拟试题附答案详解.docx
- 2025年上海市上海市奉贤区文体广电局招聘考前自测高频考点模拟试题附答案详解.docx
- 2025贵州黔西南州高校引才暨第十三届贵州人才博览会引进人才23人考前自测高频考点模拟试题及参考答案.docx
- 2025年上海市上海市闵行区住房和城乡建设局选聘事业编制人员考前自测高频考点模拟试题含答案详解.docx
- 2025年云南省曲靖市麒麟区住房和城乡建设局选聘事业编制人员考前自测高频考点模拟试题及答案详解1套.docx
- 2025年内蒙古自治区包头市达茂联合旗发展和财政局招聘编外人员考前自测高频考点模拟试题含答案详解.docx
- 2025年云南省思茅市江城县派出所招聘协(辅)警6人考前自测高频考点模拟试题含答案详解.docx
最近下载
- 大数据数据分析项目实践报告.doc
- Unit 6 Electricity everywhere 第4课时 Writing 教学设计 沪教版英语七年级下册.docx
- 防爆电气设备安装与检验考核试卷.docx
- 情态动词-专题课件(共28张课件).ppt VIP
- 《GB 50318-2017城市排水工程规划规范 》最新解读.pptx
- 河南水投集团所属公司招聘笔试真题2024 .pdf
- Unit 2 Travelling Around 大单元整体教学设计-高中英语人教版必修第一册.docx
- 义务教育生物学课程标准(2022年版).docx
- 新人教版一年级数学下册应用题练习带答案(全套).pdf
- 汉字与服饰文化(文字学).ppt VIP
文档评论(0)