版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1堆与拷贝堆与拷贝(kobi)构造函数构造函数第一页,共20页。第1页/共19页第二页,共20页。C+C+程序的内存格局通常分为四个区:程序的内存格局通常分为四个区:全局数据区全局数据区代码区代码区栈区栈区堆区堆区全局变量、静态数据、常量全局变量、静态数据、常量(chngling)(chngling)存放在全局数据区存放在全局数据区;所有类的成员函数和非成员函数代码存放在代码区;为运行函数;所有类的成员函数和非成员函数代码存放在代码区;为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放于栈区而分配的局部变量、函数参数、返回数据、返回地址等存放于栈区;余下的空间作为堆区。;余下
2、的空间作为堆区。第2页/共19页第三页,共20页。void fn()Tdate * pD;pD=(Tdate *) malloc(sizeof(TDate);/free(pD); class TDatepublic:TDate(); /构造函数构造函数void SetDate(int y, int m, int d);int IsLeapYear();void Print();private:int year, month, day;第3页/共19页第四页,共20页。n如果构造函数被调用,则须在进行内存分配的malloc()调用时进行,而malloc()仅是一个函数调用,没有足够的信息(xnx
3、)调用构造函数。pD从malloc()获得只是一个含有随机数据的类对象空间,须在内存分配之后再进行初始化。void fn()Tdate * pD;pD=(Tdate *) malloc(sizeof(TDate);pD-SetDate(2011,1,1);/free(pD); 第4页/共19页第五页,共20页。void fn()Tdate * pS;pS=new TDate; /分配分配(fnpi)堆空间并构造堆空间并构造/delete pS; /析构并将空间返还给堆析构并将空间返还给堆 n如果分配局部对象,则在该局部对象退出作用域时自动调用析构如果分配局部对象,则在该局部对象退出作用域时自动
4、调用析构函数。但堆对象的作用域是整个程序生命期,所以除非程序运行函数。但堆对象的作用域是整个程序生命期,所以除非程序运行完毕,否则堆对象的作用域不会到期。堆对象的析构是在释放堆完毕,否则堆对象的作用域不会到期。堆对象的析构是在释放堆对象语句对象语句delete执行之时。执行之时。第5页/共19页第六页,共20页。class TDatepublic:TDate(int y, int m, int d)year=y; month=m;day=d;private:int year, month, day;void fn()Tdate * pD;pD=new Tdate(2011,1,1); /del
5、ete pD; nnew根据根据(gnj)参数匹配的原则来调用构造函数,如果写成参数匹配的原则来调用构造函数,如果写成pD=new Tdate;则由于则由于TDate类没有提供无参的构造函数而出错。类没有提供无参的构造函数而出错。第6页/共19页第七页,共20页。class Studentpublic:Student(char * pName=“no name”)strncpy(name,pName,sizeof(name); namesizeof(name)-1=0;private:char name40;void fn(int num)Student *pS=new Studentnum;
6、/delete pS; n构造函数被调用构造函数被调用num次,依次构造次,依次构造pS0到到pSnum-1。n从堆上分配从堆上分配(fnpi)对象数组,只能调用默认构造函数,不能调用任何其他构造函数。对象数组,只能调用默认构造函数,不能调用任何其他构造函数。第7页/共19页第八页,共20页。第8页/共19页第九页,共20页。形参是本形参是本类对象类对象(duxing)的引用的引用第9页/共19页第十页,共20页。第10页/共19页第十一页,共20页。第11页/共19页第十二页,共20页。说明:函数说明:函数g表面表面(biomin)上将对象上将对象A返回给主函数,但返回给主函数,但A是局部对
7、象,离是局部对象,离开建立它的函数后就消亡了,不可能开建立它的函数后就消亡了,不可能在返回主函数后继续生存,编译系统在返回主函数后继续生存,编译系统在处理这种情况时会在主函数中创建在处理这种情况时会在主函数中创建一个临时的无名对象,该临时对象的一个临时的无名对象,该临时对象的生存期只在函数调用所处的表达式中生存期只在函数调用所处的表达式中。执行。执行“return A;”时,实际上是调时,实际上是调用拷贝构造函数将对象用拷贝构造函数将对象A复制到临时复制到临时对象中。表达式对象中。表达式 B=g( );计算完毕后,计算完毕后,临时对象自动消失。临时对象自动消失。第12页/共19页第十三页,共2
8、0页。Student fn()Student ms(“Randy”);return ms;void main()Student &ref=fn();/. n 因为外部表达式因为外部表达式Student &ref=fn(); Student &ref=fn(); 到分号处结束,之后到分号处结束,之后(zhhu)(zhhu)从从fn()fn()返回的临时对象不再有效,即返回的临时对象不再有效,即refref所引用的目标不复存在。所引用的目标不复存在。第13页/共19页第十四页,共20页。第14页/共19页第十五页,共20页。第15页/共19页第十六页,共20页。void fn()Student(“
9、Randy”); /.n 无名对象可以作为实参传递给函数,可以用来拷贝构造一个无名对象可以作为实参传递给函数,可以用来拷贝构造一个(y )(y )新对象,也可以初新对象,也可以初始化一个始化一个(y )(y )引用。引用。void fn(Student & s);void main()Student &refs= Student(“Randy”);Student s= Student(“Randy”);fn(Student(“Randy”);第16页/共19页第十七页,共20页。class Student()public:Student(char *);/.;n 因为因为(yn wi)(yn
10、wi)有有Student(char Student(char * *) )的构造函数,又有函数的构造函数,又有函数fn(Student & s)fn(Student & s),于是,于是fn(“Jenny”)fn(“Jenny”)被认为是被认为是fn(Student(“Jenny”) fn(Student(“Jenny”) ,予以匹配。,予以匹配。void fn(Student & s);void main()fn(“Jenny”);第17页/共19页第十八页,共20页。n 构造函数用于类型转换时要注意以下两点:构造函数用于类型转换时要注意以下两点:n只会尝试含有一个只会尝试含有一个(y )参
11、数的构造函数参数的构造函数n如果存在二义性,则放弃尝试如果存在二义性,则放弃尝试class Student()public:Student(char *pName=“no name”);/.;class Teacher()public:Teacher(char *pName=“no name”);/.;void addCourse(Student & s);void addCourse(Teacher & t);void main()addCourse(“Prof.D”); /error:二义性二义性正确的方法是显示正确的方法是显示(xinsh)地转换:地转换: addCourse(Teacher(“Prof.D”);第18页/共19页第十九页,共20页。NoImage内容(nirng)总结会计学。第1页/共19页。全局变量、静态数据、常量存放在全局数据区。为运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《数据校验与加密》教案-2025-2026学年鲁教版(新教材)小学信息技术四年级下册
- 风电行业2026年投资策略分析报告:供需共振出海破局
- 中国民族民间舞蹈考级教材资料
- 临床医学检验临床化学:临床医学检验临床化学必看考点真题
- 2025-2026学年河北省沧州市高三下学期一模考试化学试题(含答案解析)
- 某塑料厂生产线操作规程
- 某麻纺厂客户服务标准制度
- 麻纺废水处理设施操作准则
- 某印刷厂设备保养办法
- 某麻纺厂设备投资决策准则
- DB32T 4037-2024 农贸市场建设和管理规范
- 粤港澳大湾区课件【知识精研】 高三地理一轮复习
- 2mm土工膜长丝土工布检测报告合格证
- 飞利浦照明授权合同模板
- 安全评价技术(第三版)评价单元的划分和评价方法的选择
- 2024年江苏高考地理试卷试题真题及答案详解(精校打印版)
- 混凝土预制板合同
- 幼儿园一等奖公开课:大班社会活动《爱的印记》课件
- 包装饮用水项目可行性研究报告
- 新人教版八年级下册全册练习题
- 预防打架斗殴教育课件
评论
0/150
提交评论