- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言程序设计》第二次直播课堂主讲首都经贸大学李
《 C++语言程序设计》 第二次直播课堂 主讲 首都经贸大学 李宁 副教授 一、关于函数原形和头文件 函数的定义和函数的原型 例:double cubic(double d){ //定义 return d*d*d;}double cubic(double d); //原形 函数原形提供了生成函数调用代码所必须的接口信息,因此: 在函数的调用处之前,需通过函数原形提供该调用函数的接口信息。 函数定义也能提供同样的接口信息,因此: 如果函数的定义出现在函数调用处之前,函数原形即可省略。 但是,通过函数定义来担负函数原形的任务存在着下列问题: 函数的定义必须出现在函数调用的同一文件中,限制了函数的使用范围; 函数定义必须以源程序的形式呈现,不便于将之作为产品提供; 不便于实现大系统,不便于分工。 应尽可能做到函数的实现(定义)与函数的使用(调用)的分离: 首先设计函数原形,作为函数定义和函数调用必须共同遵守的接口标准; 将定义函数的程序和使用函数的程序放在不同文件中。 头文件以固定的、便于利用的形式保存一组函数的调用接口信息,确保了接口信息描述的正确性和一致性。 用#include命令将头文件插入到需要的程序文件中 二、关于函数模板 什么情况下不可省略模板实参? 无法通过模板函数的参数隐含获得相关信息的模板参数; 在任何不可省略参数前面的模板参数。 例1: templateclass T1, class T2, class T3T2 Max(T1 x, T3 y){ return T3(T3(x)T3(y)? x : y);} //定义 coutMaxint,foat(3,3.5); //调用 提示:未出现在模板函数参数表中的模板参数,其实参不得省略。 例2(教材例5.10): template typename Type, int Rows,int Cols void sumAll(Type data[][Cols], Type result[]){ for(int i=0;iRows;i++){ result[i]=0; for(int j=0;jCols;j++) result[i]+=data[i][j];}} //定义 int d[][3]={ {1,2,3},{2,3,4}, {4,5,6},{6,7,8}};int r[4];sumAllint,4,3(d,r);//调用 提示:对于普通类型(非虚拟类型)的模板参数,其实参不得省略。 例3: templateint Rows,int Cols, typename Type.. .. .. //定义 .. .. .. sumAll4,3(d,r); //调用 提示:通过调整模板参数的顺序,有可能使更多的模板实参可以省略。 三、关于参数表中的数组 参数表中的数组就是指针 因此,定义参数表中的数组时不必给出第一维的大小; 因此,对于参数表中的数组,也可以定义为指针,对应关系是: A[] ←→ *A; A[][]… ←→ (*A)[]… 因此,调用这样的函数时,只需以数组名作为实参; 因此,修改形参数组就是在修改形参指针所指向的数据,也就是在修改实参数组。但这并不违反“传值”原则,因为对应于形参的实参数组名(指针)并没有被修改; 四、动态空间的使用应避免的问题 悬挂访问:通过一个没有初始化的指针或空指针访问不存在的数据; 存储泄漏:申请的动态空间用完后被丢弃,没有释放; 重复释放:同一动态空间被多次释放; 申请操作与释放操作不配套例如用 malloc() 申请,用 delete释放;或用 new 申请,用 free() 释放。 五、两种重要的构造函数 无参构造函数 指: 未定义参数的构造函数,或 : 所有参数均为可选参数的构造函数。 如果类中包含一个类对象数据成员,而类的构造函数又没有对之进行初始化,则系统隐含调用该成员所属类的无参构造函数进行初始化。 对于派生类,构造函数没有对基类进行初始化,则系统隐含调用基类的无参构造函数进行初始化。 每个类至少要有一个构造函数。如果没有定义,系统自动生成一个形如 X(){} 的默认无参构造函数。 由于无参构造函数有可能被隐含调用,因而类中通常应该有无参构造函数。如果类中已经定义了若干构造函数,应检查其中是否包含无参构造函数,如没有,应添加一个。 隐含调用无参构造函数例1 class XX{ int xx; public: XX(int n=0):xx(n){}
您可能关注的文档
最近下载
- 中职《幼儿心理学》课程教学课件-项目二任务3 感知觉规律的运用.pptx VIP
- Hasselblad哈苏H6中文说明书.pdf
- (人教2024版)一年级数学上册《数学游戏》单元复习讲义.docx
- 木材人造板制造工艺考核试卷.docx VIP
- 百家争鸣(共张PPT)-PPT课件模版[1].pptx
- 《无障碍设施施工验收及维护规范》(GB50642—2011)的解读.pdf VIP
- 13_一等奖丨清华大学丨“三位一体,三创融合,开放共享”创新创业教育体系和平台的创建(20220427推文).pdf VIP
- 百得两用燃烧机TBML 1200 ME电子控制器调试安装说明书.pdf
- 磁共振成像原理与临床应用完整版.ppt VIP
- 人教2024版英语七年级上册Starter Unit 1- Unit 3基础知识练习(含答案).docx VIP
文档评论(0)