封装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设计比较没有弹性。