第05章函数函数与运算符的重载.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)不要将不同

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档