Object-Based与Object-Oriented的区别,个人理解

封装ob

多态继承oo

基于对象是一种Abstract DataType,它封装了一些复杂的操作,使之易于使用。

比如说string,在C++中,通过类来实现。(封装一些数据及一些操作)

面向对象的核心是多态,关键在于你不必知道对象的真正类型,只要知道它是一种什么类型,C++中,通过类,继承,虚函数来实现。

《深度探索C++对象模型》上第一章最后几段的话:
Object-oriented支持Polymorphism,而Object-based不支持Polymorphism.主要的区别就在于此。支持多态的代价是额外的间接性--不论是在“内存的获得”或是在“类型的决断”上。
C++通过class的pointers和references来支持多态,这种程序设计风格就叫面向对象。
C++也支持具体的ADT程序风格,被称为基于对象,它只支持封装,不支持类型的扩充。
一个Object-based设计可能比一个对等的Object-oriented设计速度更快而且空间更紧凑。速度快是因为所有的函数引发操作都在编译时期解析完成,不需要设置virtual机制;空间紧凑则是因为每一个class object不需要负担传统上为了支持virtual机制而需要的额外负担。不过,Object-based设计比较没有弹性。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值