已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浅度探索C+对象模型,Coding Group 张文斌 2010-11-21,主要内容,简介 单个类 单一继承 多重继承 虚拟继承,参考文献,深度探索C+对象模型 Stanley B. Lippman C+对象的内存布局 陈皓 C+对象模型学习笔记 钟声 C+对象的实现技术 刘斌武,C+简史,在20世纪80年代初期发明,C+是由美国贝尔实验室的Bjarne Stroustrup博士发明,在C语言的基础上,借鉴了Simula语言中面向对象的特征 1998年国际标准组织(ISO)颁布了C+的国际标准,通常称作ANSI/ISO C+ 下一次标准更新原定是在2009年,一般称该标准C+0X,但是由于对新特性的争端激烈,完整的标准还遥遥无期 由于C+语言过于复杂,以及经历了长年的演变,直到现在(2010年)都没有一个编译器完全符合标准 目前最接近C+标准的编译器有GNU GCC 4.5.0和Visual Studio 2010等,为什么探索C+对象模型,满足对C+底层实现机制的好奇 更好地使用C+ 找工作,各种问题,virtual有哪些用法? 虚函数是怎么实现的? 某个类对象占有多大存储空间? ,面向对象的特征-抽象性,抽象性是将具有一定关联的数据结构(属性)和行为(操作)的对象抽象成类,隐藏对象的属性和实现细节,仅对外公开接口,面向对象的特征-继承性,继承性是子类自动共享父类数据结构和方法的机制,面向对象的特征-多态性,表现在继承中方法的重写(overwrite) 多个子类从同一父类继承而来,每个子类可以重写父类的某个方法被重写的方法在不同的子类中有不同的形式 例:动物会叫,因此人、猫、狗都会叫,但叫的方法不同 表现在一个类中方法的重载(override/overload) 一个类有多个同名的方法,但这些方法的参数个数或类型不一样 例:人吃不同的东西采用不同的形式,实验环境,Visual Studio 2008 MinGW Developer Studio 2.05 gcc 3.3.1,代码示例,问题:sizeof(Base) 是多少?,内存布局,static成员独立于对象 非static数据成员存放在每个对象中 static数据成员存放在对象之外 所有的成员函数存放在对象之外 对虚函数的支持 每一个类维护一个虚函数表(vtbl),其中存放指向虚函数的指针 类的每一个对象维护一个指向vtbl的指针vptr,可以通过vptr调用虚函数,内存布局示例,Base:Base(),static int Base:getCount(),static int Base:count,Base:show(),vtbl,sizeof(Base)=12,指向数据成员的指针,static数据成员的地址 &Point:count与 &point.count等价都指向内存中的实际地址 nonstatic数据成员的的地址 取一个nonstatic数据成员的地址,得到它在类中的偏移量,它们必须与具体的对象绑定才能取具体的值 int Point:*px = &Point:x 取一个绑定于对象身上的nonstatic数据成员的地址将得到内存中该变量的实际地址 int * p = &point.x,Nonstatic成员函数的处理,nonstatic函数必须和具体的对象绑定后才能使用,经过编译器的转换后,它和非成员函数没有分别 转换过程如下 在参数列表中安插一个额外的参数this指针 将函数体内对每一个nonstatic数据成员的存取操作转换为经由this指针来存取 经过name mangling处理后,将该成员函数转换为一个外部函数,VS2008 Mangling实例,Static成员函数,静态成员函数没有this指针,它不需要通过一个对象来调用 不能够直接存取其类中的nonstatic成员 不能够声明为const, virtual 不需要经由类对象来调用,虚函数的使用,必须使用引用或指针调用虚函数,才能表现出多态 用派生类对象直接对基类对象进行初始化或赋值将发生切割,char c,vptr,char c,vptr,int x,Base:f(),Derive:f(),单个类,class 对于数据的封装不需要额外的开销,单一继承,类似单个类,Parent,Child,GrandChild,带虚函数的单一继承,带虚函数的单一继承,Parent Child,带虚函数的单一继承,GrandChild,多重继承,多重继承是 C+的一项备受争议的面向对象的建模能力,因为它会引入很多复杂性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆两江新区人和社区卫生服务中心招聘3人考试笔试备考试题及答案解析
- 2025甘肃酒泉博睿思双语高级中学教师招聘笔试考试参考题库及答案解析
- 2026年度中国储备粮管理集团有限公司河南分公司招聘126人笔试考试参考试题及答案解析
- 2025湖北随州北星汇能产业发展有限公司工作人员社会招聘考试笔试考试参考题库及答案解析
- 2025山西吕梁市柳林县公益性岗位人员招聘3人考试笔试参考题库附答案解析
- 2025首都医科大学附属北京朝阳医院派遣合同制岗位招聘12人(第六次)笔试考试备考题库及答案解析
- 2025浙江宁波象山县商贸集团有限公司第四期招聘工作人员2人考试笔试备考题库及答案解析
- 2025四川宜宾发展产城投资有限公司及其子公司第五批员工招聘6人笔试考试备考试题及答案解析
- 2025湖南师范大学附属贵安学校招聘学科竞赛教练笔试考试备考试题及答案解析
- 2025浙江省足球协会招聘人员2人笔试考试备考试题及答案解析
- 2025至2030中国团膳行业市场发展分析及发展趋势与投资机会报告
- 2025年新员工入职医疗器械知识培训试题及答案
- 光伏屋面施工资源配置方案
- GB/T 46729-2025纺织品智能纺织品术语和分类
- 桥架安装作业指导书方案
- 2025年武汉市黄陂区公开招聘工会协理员4人笔试考试参考题库及答案解析
- 2025亳州利辛县产业发展集团有限公司2025年公开招聘工作人员10人备考题库附答案
- 分式计算题强化训练(12大题型96道)解析版-八年级数学上册
- 【飞瓜数据】2025年休闲零食线上消费市场洞察
- 2025年吉林事业单位招聘考试职业能力倾向测验试卷(石油化工)
- 水利渠道安装光伏施工方案
评论
0/150
提交评论