面向对象技术-函数三.pptVIP

面向对象技术-函数三.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章主要内容 §3.2 内联函数 ?为何使用内联函数(内嵌函数) ?函数调用需要建立栈内存环境,进行参数传递,并产生程序执行转移,需要时间和空间的开销。如果有的函数被频繁调用,则耗时很长,降低执行效率。 ? 将规模较小又使用频繁的函数定义为内联函数,在编译时就会将函数体的代码嵌入到主调函数内的每一个调用语句处,节省了参数传递、控制转移等开销。 内联函数声明与使用 ?内联函数的函数体限制 ? 内联函数体内不能有循环语句和switch语句。 ? 递归函数(自已调用自己的函数)是不能被用来做内联函数的。 ?内联函数体只适合只有1~5行的小函数 ?对内联函数不能进行异常接口声明。 ?使用内联函数可以节省运行时间,但却增加了目标程序的长度 例3-14 内联函数应用举例 #includeiostream.h inline int max ( int a, int b, int c ) { if ( ba ) a = b ; if ( ca ) a = c ; return a; } void main( ) { int i = 7, j=10, k=25, m ; m = max ( i, j, k ); coutmendl; } §3.3带默认形参值的函数 —默认形参值的作用 ?默认形参值 ?一般情况下,实参个数应该与形参个数相同。C++允许实参和形参个数不同,办法是在形参列表中对形参指定默认值。 ?调用时如给出实参,则用实参初始化形参,否则采用预先给出的默认形参值。 默认形参值的作用 默认形参值的说明次序 ? 默认形参值必须按从右向左顺序声明,并且在默认形参值的右面不能有非缺省形参值的参数。因为调用时实参初始化形参是从左向右的顺序。 ?例: int add(int x,int y=5,int z=6); //正确 int add(int x=1,int y=5,int z); //错误 int add(int x=1,int y,int z=6); //错误 缺省形参值与函数的调用位置 ? 默认形参值在函数声明中提供,当既有声明又有定义时,定义中不允许默认参数。如果函数只有定义,则默认形参值才可以在函数定义中提供。 ?例: 缺省形参值的作用域 ? 在相同的作用域内,缺省形参值的说明应保持唯一,但如果在不同的作用域内,允许说明不同的缺省形参。 ?例: int add(int x=1,int y=2); void main(void) { int add(int x=3,int y=4); add( ); //使用局部缺省形参值(实现3+4) } void fun(void) { ... add( ); //使用全局缺省形参值(实现1+2)} 例3-15 带缺省形参值的函数举例 #include iostream.h #include iomanip.h int get_volume(int length, int width = 2, int height = 3); int main( ) {int x = 10, y = 12, z = 15; cout Some box data is ; cout get_volume(x, y, z) endl; cout Some box data is ; cout get_volume(x, y) endl; return length * width * height; } 运行结果: Some box data is 10 12 15 1800 Some box data is 10 12 3 360 Some box data is 10 2 3 60 Some box data is 10 7 3 210 Some box data is 5 5 5 125 §3.4函数重载 ?如果没有重载机制,即使是完全相同的操作,但是针对不同的数据类型,就需要定义名称完全不同的函数。 ?例如定义加法函数,必须对整数加法和浮点数加法使用不同的函数名: 函数重载 ? C++允许功能相近的函数在相同的作用域内以相同函数名定义, 从而形成重载。方便使用,便于记忆。 ?若干函数,名称相同,但形参个数或类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用那一个函数,这就是函数重载

文档评论(0)

chaofeng7458 + 关注
实名认证
文档贡献者

专利代理人资格证持证人

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

领域认证该用户于2023年03月15日上传了专利代理人资格证

1亿VIP精品文档

相关文档