程序设计语言原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OO 程序
先看一点OO 程序,复习一下基本OO 程序的特征
这里看一段定义了几个类的C++ 代码
定义list_node 类,用于实现带头结点的
双向循环链接表
每个结点里有一个域指向表头结点
2012年5月21
注意:header 是个list_node
定义的是有头结点的循环链表
OO 程序通用的表结点类
还可以定义通用的容器类:
•基本容器类没有具体数据域,不保存具体类型的元素,只实现容器操作,如:一些基本判断谓词,插入删除等等
•通过继承实现存储具体类型的元素的具体容器
派生的int 表结点类
使用这种int 表的问题:
如果需要访问结点的数据内容,必须对
取出的结点做强制
在每个对象开头(数据域之向其所属的类的虚表(运行
C++ 代码:
基类指针可以安全地引用派生类的对象,这时的(非变换)自动类型转换称为“向上强制”,upcasting 但子类指针不能引用基类对象
多重继承的一种布局方式偏移量d 可静态确定
在调用基类方法和向上向下强制时,都要用到这个d
如果语言里存在多重继承,所有方法表都要增加
方法
2012年5月
这里就可以分别写覆盖定义
其他提供多重继承的语言可能支持不同方式
复本式继承没有引进任何新问题
不能直接从D 对象出发访问A 的方法
必须先转到
用方式),而后才能调用
都不连续,
这时需要在各个派生
这个地址相对于各子
对象的距离都是编译
这里还是需要在虚表里保存
Java 代码示例:向一个(一组)类里逐
步混入若干接口(interface)的虚方法
三个接口:
排序
显示
保存
继承widget
混入一个接口
的方法实现2012年5月
在每个方法表前面加一个this 修正量项这一修正量由这个表里所有的方法共享因为这些方法都是一起定义的。

相关文档
最新文档