- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 12.3 继承的编译方案 重复继承在下述情况导致冲突和二义 当多实例的特征被用于访问、 调用和覆盖的时候 当类C的对象的A视图被建立 时,因为类C的对象包含多个 类A子对象 可见性规则可以在某些情 况下帮助避免这些困难 B1 B2 附加(C) 独立的重复继承时的 对象结构(程序视图) 12.3 继承的编译方案 独立的重复继承的对象结构(实现视图) (把单一继承的编译方案加以扩充 ) B1 B2 附加(C) C方法 B2方法 B1方法 B2方法 C方法表 C::B2方法表 C引用,B1引用 B2引用 12.3 继承的编译方案 C对象的B1视图是C视图的开头部分 C视图的开头部分不能作为B2视图 B1 B2 附加(C) C方法 B2方法 B1方法 B2方法 C方法表 C::B2方法表 C引用,B1引用 B2引用 12.3 继承的编译方案 困难的事情是,从B2的视图来恢复C的视图, 因为不知B2引用和C引用的距离 B1 B2 附加(C) C方法 B2方法 B1方法 B2方法 C方法表 C::B2方法表 C引用,B1引用 B2引用 12.3 继承的编译方案 编译器把用于确定所需视图的偏移存放在方 法表中下邻该方法指针的地方 B1 B2 附加(C) C方法 B2方法 B1方法 B2方法 C方法表 C::B2方法表 C引用,B1引用 B2引用 12.3 继承的编译方案 独立的重复继承的对象结构(实际视图) B1 B2 附加(C) C方法 B1方法 B2方法 C方法表 C引用,B1引用 B2引用 习 题 * * * * * * * * * * * * * * * * * * * * * * * * * 中国科大 第十二章 面向对象语言的编译 本章内容 概述面向对象语言的重要概念和实现技术 以C++语言为例,介绍如何将C++程序翻译成C程序 实际的编译器大都把C++程序直接翻译成低级语言程序 12.1 面向对象语言的概念 12.1.1 对象和对象类 对象 由一组属性和操作于这组属性的过程组成 属性到值的映射称为对象的状态,过程称为方法 对象类 一类对象的总称,规范了该类中对象的属性和方法,包括它们的类型和原型 对象有自己存放属性的存储单元;同一个类的对象可以共享方法的代码 对象类形成了面向对象语言的模块单元 下面将把术语“类”和“类型”看成是同义的 12.1 面向对象语言的概念 12.1.2 继承 图形对象的继承层次结构 GraphicalObj translate scale PolyLine translate scale length ClosedGraphics area Ellipse translate scale area PolyGon area Rectangle area Triangle … … … … … … 12.1 面向对象语言的概念 继承 基类、派生类、子类、抽象类 子类型规则 当某个类型的一个对象在某个输入位置被需要或作为函数的返回值时,其任何子类型的对象允许出现在这些地方 类B的一个对象,若它不同时是B的某个真子类的对象,那么称该对象是B的真对象,称B是该对象的运行时类型 12.1 面向对象语言的概念 方法选择规则 如果类B继承类A并且重写了方法m,那么对类B的对象b来说, 即使它作为类A的对象使用, 也必须使用在类B中定义的方法m 12.1 面向对象语言的概念 12.1.2 继承 图形对象的继承层次结构 GraphicalObj translate scale PolyLine translate scale length ClosedGraphics area Ellipse translate scale area PolyGon area Rectangle area Triangle … … … … … … B A 12.1 面向对象语言的概念 动态绑定规则 当对象o的一个方法可能被子类重新定义时,如果编译器不能确定o的运行时类型,那么必须对该方法进行动态绑定 void zoom (GraphicalObj obj, double zoom_factor, Point center) { obj.translate (?center.x, ?center.y); // 将“中心”移至“点(0, 0)” obj.scale (zoom_factor); // 缩放 } 12.1 面向对象语言的概念 1
您可能关注的文档
最近下载
- 2025青岛版小学科学三年级上册1-5《制作动物分类图册》(教学课件)(新教材).pptx
- 标准图集-17J008 挡土墙(重力式、衡重式、悬臂式) 无水印.pdf VIP
- JJF(陕) 048-2021 一体化振动变送器校准规范.docx VIP
- 退药申请单.doc VIP
- 2025年中国镁铝尖晶石行业投资前景及策略咨询研究报告.docx
- 农牧民培训国家通用语言.pptx
- 2022年度国铁集团质量安全红线检查迎检实施方案(最终版) (2).pdf VIP
- 六年级数学上册第一单元圆基础测试题北师大.doc VIP
- (高清版)B/T 42584-2023 信息化项目综合绩效评估规范.pdf VIP
- 《建筑给水复合管道工程技术规程》CJJ@T155-2011.pdf VIP
文档评论(0)