版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天文题目及答案
- 物业垃圾广告车管理制度(3篇)
- 石化静设备管理制度(3篇)
- 兽药营销培训
- 胖东来管理制度工作划分(3篇)
- 蜡烛失火与消防管理制度(3篇)
- 铁路维修小车的管理制度(3篇)
- 饮用水制售管理制度(3篇)
- 《GA 996-2012警力输送车》专题研究报告
- 兽医局防疫员培训课件
- 公路工程施工安全技术与管理课件 第09讲 起重吊装
- 2026年城投公司笔试题目及答案
- 国家安全生产十五五规划
- 河南省2025年普通高等学校对口招收中等职业学校毕业生考试语文试题 答案
- GB/T 16938-2008紧固件螺栓、螺钉、螺柱和螺母通用技术条件
- FZ/T 82006-2018机织配饰品
- 《食品包装学(第三版)》教学PPT课件整套电子讲义
- 全尺寸测量报告FAI
- 新教材教科版五年级上册科学全册课时练(课后作业设计)
- pep人教版六年级英语上册《Recycle2》教案教学设计
- 过电压抑制柜配电聚优柜控制器
评论
0/150
提交评论