- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向过程编程风格9
1.4 面向过程编程风格 1.4.1 函数 1.4.2 局部静态变量 1.4.3 inline函数 1.4.4 重载 1.4.5 模板函数 1.4.6 函数指针 1.4.7 头文件包含 1.4.1 函数 使用函数的优点: 1)易读性,一般不超过500行; 2)复用性,避免重复代码; 3)团队协作 函数的4个部分: 1)返回类型,void无 2)函数名称,GetName()的易读英文 3)参数表,可void 4)函数主体 函数的注意 1)使用之前需申明(可不写参数名),申明与实现最好分别放在.h和.cpp中,模板例外 2)参数的合法性是否检查:由项目分工决定(关于数据类型的溢出) 3)常常使用bool型作为函数是否正常返回的返回类型,不使用exit(-1)这种武断的形式 4)除void返回类型,其余必须明确各支线的返回值,否则编译出错/或警告 函数的调用 传值:参数被复制,函数调用完后,全部释放 传址:复制的是原实参对象的地址,函数调用结束,实参被改变 使用传址的优点: 1)可以方便对传入的对象进行修改; 2)可以得到多个返回值; 3)不用复制对象,效率得到提高 指针和引用区别 1)都具有上述特点; swap(int * x1, int* x2); swap(int x1, int x2); 2)调用方法有区别; 3)指针需要对其合法性进行检查,否则容易出现异常; 4)建议在使用基本数据类型时,使用指针,类的对象时尽量使用引用 5)虚函数调用区别…? print (BOOK * pBook) {pBook-print();} print(BOOK book) {book.print();} 对象的生存空间 函数Local scope: 局部可见和有效。使用栈空间,不能使用局部指针或引用得到函数返回值(除static),例如返回实数数组 File scope:文件可见、有效 外部:extern (”C”) 类型 函数或对象; 动态内存 使用堆空间 关键字New ,delete 例子: int * pia = new int[4]; //array int * pi = new int(4); //initialize *pi=4 delete [] pia; delete pi; 注意memory leak内存泄露!!! 默认参数值 规则: 1)按照最右端开始匹配; 2)函数申明处,或者函数定义处,两者只可有一; 3)为了可见性,建议放在函数申明处,这样在函数调用时,开发环境直接提示 1.4.2 局部静态变量 函数弹出栈,static变量并不释放 求N!的递归算法 unsigned int fact (unsigned int n) { static vectorint Fact; //Fact = new int[…]; static unsigned int num = 0; if (n = num) return Fact[n-1]; else { unsigned int res; if(n == 1 || n == 0) res = 1; else res = n*fact(n-1); num = n; Fact.pushback(res); } return res; } //说明求3!, 5!, 4!的过程 1.4.3 inline函数 编译器对其合并,而不是执行时压栈 1.4.4 重载 函数名相同,参数表不同(参数类型或参数数目) 函数返回值类型可同可不同,不能以返回值类型不同来定义重载 1.4.5 模板函数 对于参数表数目相同,只是类型不同,而且函数体相似(可以通过重载对象操作符或成员函数),可将这样的函数合并成函数模版 1.4.6 函数指针 用在程序中动态执行某个函数 定义函数指针 某函数中使用 使用前确定具体调用方法 1.4.7 头文件包含 函数的申明,放入头文件中。注意: 1) inline修饰,也放入头; 2)函数实现只能有一份; 3)多个文件包含的头文件,若公用全局对象,加extern 4)“”与<>的区别,编译器搜索顺序:若引号则从当前的目录开始,则从库目录及另外环境设置的目录进行搜索。另一种观点是自定义与系统头文件之区别。 第一次 作业 1、练习1-7,pp33 2、练习2-6,pp65 * * 还有一种方式也行,效率差 对于常用的代码简单的程序块,建议使用inline,可以提高效率 函数定义
您可能关注的文档
- 陕西专业技术人员继续教育 证书管理暂行办法.doc
- 陕西医疗服务项目格调整修订其他部分.doc
- 陕西卫生厅科研基金申请书.doc
- 陕西师范大学党课考试题与答案.doc
- 陕西建筑工程消耗量定额章节说明.doc
- 陕西建设工程进场原材料.doc
- 陕西文明工地资料第一分部.doc
- 陕西建设工程质量安全协同办公平台操作说明企业端完整版.doc
- 陕西物联网产业基地落户西咸新区信息产业园.ppt
- 陕西李西勤如何深度拓展大巿场.ppt
- 职业技术学院2024级工业机器人技术(安装与维护)专业人才培养方案.docx
- 职业技术学院2024级应用化工技术专业人才培养方案.pdf
- 职业技术学院2024级软件技术(前端开发)专业人才培养方案.pdf
- 职业技术学院2024软件技术专业人才培养方案.docx
- 职业技术学院2024级信息安全技术应用(安全运维)专业人才培养方案.docx
- 职业技术学院2024级新能源汽车检测与维修技术(车辆鉴定与评估)专业人才培养方案.pdf
- 职业技术学院2024级石油炼制技术专业人才培养方案.pdf
- 职业技术学院2024级环境监测技术专业人才培养方案.docx
- 职业技术学院2024级汽车制造与试验技术专业人才培养方案.pdf
- 职业技术学院2024级信息安全技术应用专业人才培养方案.pdf
文档评论(0)