- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第05章函数函数与运算符的重载
函数在C++程序设计中的意义体现在四个方面:;(4)作为面向对象程序设计(OOP)语言的C++,以类为核心,类由数据和方法组成,方法就是对数据的运算和处理,亦即类的函数成员。故函数设计同样是OOP 的重要组成部分。;1.函数原型
函数原型用来指出函数的名称、类型和参数,其格式为:
[属性说明]类型函数名(参数表);;函数原型一般在两种情形下被使用:
①在程序中某函数的调用语句出现在该函数的定义之前,这时必须在调用语句之前列出函数原型。
②为了类定义的简明清晰,一般把较大的函数成员定义移到类说明之外,这时应把该函数的原型列于类说明之中。;2.函数定义
函数定义与函数原型的主要区别是它还包括函数体,其格式为:
[〈属性说明〉]〈类型〉〈函数名〉(〈参数表〉)〈函数体〉
属性说明,返回类型,函数名与函数原型一致,参数表中不可省略参数名。
函数体:由{和}括起来的复合语句即程序块。;5.2.2 函数调用;(3) 根据参数的类型(值参数或引用参数)进行值参数的值传递或引用参数的换名;
(4) 运行函数体代码;
(5) 返回调用点,并返回所要求的函数值。;函数的返回值有下面几种情形:
1. 返回void 类型
如果函数无值返回,应说明为void 类型。
2.返回数值类型
最常见的函数是返回一个数值的函数。
3.返回引用类型
值返回方式是C 和Pascal 语言中唯一的返回方式,C++语言提供的引用返回概念是其特有的一种很强的功能,当函数定义中把该函数说明为某类型的引用类型时,该函数调用后返回的不单是值,而是包含返回值的变量(或对象)。;5.2.4 函数的参数;如:void sort(int n,float * a); 这个函数可对n 长的浮点数组进行排序,n 是变化的;由于a 是数组的首地址,因此这个函数实际上是可以进行对任意多个浮点数排序的处理。;C++程序还允许为函数定义可缺省参数(即参数有默认值。当对应的实参缺省时,该形参将使用默认值。),这种函数调用时具有灵活性,例如: int sqrsum(int a,int b,int c=0) {return a*a+b*b+c*c;}其中参数c 为可缺省参数,下面???调用方式都是合法的(x,y,z 为int 型变量): sqrsum(x,y,z) sqrsum(x+y,x-y) sqrsum(x,y)参数表中可有任意多个参数指定为可缺省参数,但所有可缺省参数必须列后。在调用该函数时,只能缺省后面的可缺省参数。;5.2.5 值调用与引用调用;函数调用语句中,与赋值形参相对应的实参可以是指定类型的常量、变量或表达式。
为赋值形参创建的参数变量是局限于函数体运行的局部变量,它作为该形参的一个实例,参加函数体程序块的这次运行,一旦运行完毕, 这个参数变量就被撤消。
实参与形参即使同名,也没有直接的关系。调用该函数,仅仅传递实参的值,实参本身与函数调用过程无关,在调用之后其值不会改变。
当一个函数有多个赋值形参时,在进行值传递过程中,多个实参表达式计算的次序将依赖于具体的编译系统。;2.引用调用方式;引用形参在调用过程中的参数传递机制不同于赋值形参。其要点是:;(4)在函数体程序运行结束,控制转回调用点时,该引用形参与实参变量的对应关系也就终止了。但是在调用过程中对于这个实参变量的所有处理和操作的结果,却保留下来。这一点也是区别于赋值调用的。它不需要借助于指针类型,直接可以把函数处理结果带出函数。;设计函数在下面两种情形时,建议采用引用参数。;5.2.6 内联函数;(3)一般把函数体短小而又频繁调用的函数说明为内联函数较好。
内联函数体内一般不能有循环语句和switch语句。
内联函数的定义必须出现在第一次调用之前。
对内联函数不能进行异常接口声明。
(4)利用编译预处理的宏定义方式,也可以实现类似于内联函数的功能。不过,宏定义方式没有类型的概念,是不安全的;内联函数的方式更为方便和可靠。;5.3 函数的嵌套与递归;嵌套调用和返回示图:;5.3.2 函数的递归;;5.4 函数与运算符的重载;在定义同名函数时应注意:;(4)包含可缺省参数时,可能造成二义性,程序设计中应避免这种情形出现。 例如: int sum(int a,int b,int c=0); int sum(int a,int b);
(5)参数名不能区分函数。 例如: int sum(int a,int b); int sum(int x,int y);
(6)不要将不同
您可能关注的文档
- 研究的定义和意义.ppt
- 研修让我们共同成长.ppt
- 研究生单片机应用02.ppt
- 研读教材研究教法.ppt
- 矿井防尘[主要负责人2010.08].ppt
- 矿压课件[0绪论]山科.ppt
- 硬笔书法[学习必备].ppt
- 硬笔书法第一讲:“硬笔书法基本知识”[彭州市三界小学李晓玲收集整理].pptx
- 社会互联网:微博营销[PPT34页].ppt
- 社会学8-社会变迁和现代化.ppt
- 超越健康3gogotalk主修青少级.pdf
- an automatic approach finding metadiscourse mar寻找话语标志自动方法.pdf
- 资料综合页jumo gmbh co kg成果.pdf
- 听力抑郁症黑狗摘自miller reynolds c f depression沮丧.pdf
- 在城市中超越自课进一步活动搭配集每个短语用句子青少级ffabovebeyond 23.pdf
- 十届高校交流策划想.pdf
- 模块12e wifiesp无线网络.pdf
- 上配报光盘高二配18 b3.pdf
- 内容成果参考.pdf
- fabrication of microneedle-cnt hierarchical nano surfacesensor and its vitro glucose sensing微针碳纳米管分级微纳表面传感器制备及其体外葡萄糖.pdf
最近下载
- 部编人教版道德与法治六年级上册期末测试题及答案【6套已排版】.pdf
- 分布式光伏发电项目施工方案.docx VIP
- 四川省绵阳市2023-2024学年高二上数学期末预测试题含解析.doc VIP
- resform使用说明教学教案.doc
- NBT11222-2023光伏组串I-V检测及诊断技术规范.docx VIP
- 部编版四年级语文上册期末测试卷(八套)(附答案).docx
- GB/T 35770-2022合规管理体系 要求及使用指南.pdf
- 2022年四川省巴中市中考文科综合试卷真题(word精校版) 独家首发.docx
- 2024年中考语文样卷答题卡 .pdf VIP
- 酒店前台培训计划(1).doc
文档评论(0)