第9章 类型系统 - buaaeducn.ppt

第9章 类型系统 - buaaeducn.ppt

ID:58705207

大小:2.14 MB

页数:120页

时间:2020-10-24

第9章 类型系统 - buaaeducn.ppt_第1页
第9章 类型系统 - buaaeducn.ppt_第2页
第9章 类型系统 - buaaeducn.ppt_第3页
第9章 类型系统 - buaaeducn.ppt_第4页
第9章 类型系统 - buaaeducn.ppt_第5页
资源描述:

《第9章 类型系统 - buaaeducn.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三次课后作业面向对象程序设计语言比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?1.C++语言的面向对象特征对象模型:封装(1)访问控制机制:C++提供完善的访问控制机制,分别是:public,protected和private。private,public,protected访问标号的访问范围public可访问1.该类中的函数;2.子类的函数;3.其友元函数访问;4.该类的对象访问;protected可访问1.该类中的函数;2.子类的函数;3.其友

2、元函数访问;不可访问1.该类的对象访问;private可访问1.该类中的函数;2.其友元函数访问;不可访问1.子类的函数;2.该类的对象访问;表1private,public,protected访问标号的访问范围1.C++语言的面向对象特征1.C++语言的面向对象特征对象模型:封装(2)对象的独立性:C++中对象本身不具有独立性,也就是对象必须属于某一个类;(3)类本身是不是对象?C++中类本身不是对象,对象是类的实例化;(4)基于类的模型,还是基于对象或原型的模型?C++是基于类的模型;1.C++

3、语言的面向对象特征对象模型:继承(1)类层次结构:采用单根的类层次结构,还是任意的类层次结构?C++采用任意的类层次结构;(2)继承方式:提供哪些继承方式?C++采用三种继承方式,分别是public继承,protected继承,private继承;publicprotectedprivatepublic继承publicprotected不可用protected继承protectedprotected不可用private继承privateprivate不可用表2类的继承方式1.C++语言的面向对象特征

4、对象模型:继承(3)采用基于继承的模型,还是基于指派的模型?C++是基于继承的模型(4)允许多重继承?还是只允许单继承?C++允许单继承、多继承、多重继承和虚继承;在单继承中,每个类可以有多个派生类,但是每个派生类只能有一个基类,从而形成树形结构;图1单继承实例1.C++语言的面向对象特征对象模型:继承(4)允许多重继承?还是只允许单继承?C++允许单继承、多继承、多重继承和虚继承;图3多重继承实例图2多继承实例1.C++语言的面向对象特征对象模型:继承(4)允许多重继承?还是只允许单继承?C++允

5、许单继承、多继承、多重继承和虚继承;C++使用虚拟继承,解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。图4虚继承实例1.C++语言的面向对象特征对象模型:多态多态:是指同样的消息被不同类型的对象接收时导致不同的行为。多态类属重载虚函数同名函数模板函数1.C++语言的面向对象特征对象模型:多态(1)类属:虚函数用父类的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数,这种技术可以让父类的指针有“多种形态”;1.C++语言的面向对象特征

6、对象模型:多态(2)类属:模板函数模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。1.C++语言的面向对象特征对象模型:多态(3)重载:同名函数有两个或多个函数名相同的函数,但是函数的形参列表不同。在调用相同函数名的函数时,根据形参列表确定到底该调用哪一个函数。1.C++语言的面向对象特征其他问题(1)是不是追求“纯粹”的面向对象语言?C++语言不是“纯粹”的面向对象语言;1)main函数不在任何类里面;

7、2)基本的数据类型不是对象;3)友元会破坏封装性;4)支持独立的函数,数据,即过程化编程;1.C++语言的面向对象特征其他问题(2)变量的语义模型:采用值模型还是引用模型?在变量的值模型中,值保存在变量的存储区里;而在变量的引用模型中,变量的值需要用另一个值对象表示,变量的存储区里存放的是对值对象的引用;C++采用的是值模型,可以创建静态对象或栈对象;但只有通过对象引用或指向对象的指针才能实现面向对象的动态约束行为。1.C++语言的面向对象特征其他问题(3)是否允许静态对象或者堆栈对象(自动对象)?

8、C++支持静态对象和自动对象;静态对象:变量定义在函数外或是用static关键字修饰的变量存放在静态存储区。放在静态存储区的数据在整个程序运行期间持续有效。自动对象:C++默认局部变量的生命期局限于所在函数的每次执行期间。只有当定义它的函数被调用时才存在的对象成为自动对象。自动对象在每次调用函数时创建和撤销。1.C++语言的面向对象特征其他问题(4)是否依赖自动废料收集(GC)?C++不依赖自动废料收集(GC);大多数OO语言都依赖于自动存储回收系统;C++是例外,其

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。