基于对象与面向对象

基于对象(Object-Based):以对象作为基本单位,但对象之间并不会发生关系。一个基于对象构建的系统就像是一系列孤立对象的集合体。

面向对象(Object-Oriented):同样以对象作为基本单位,同时关注对象间的关系。系统中的对象相互协作,就像是一个有机体。主要的关系有:继承、组合等等。

多态是面向对象的重要特性,多态即一个类的对象可具备多种形态。具体表现为类中定义的某个方法(声明为虚方法),在运行时被override掉,具备了新的行为。

C++基于虚表vtab及指向虚表的指针vptr来实现多态效果。虚表指针vptr并非C++类的“标配”。

按照C++的设定,只要类中存在至少一个虚方法,编译器就会对其安插vptr,虚表,虚指针是C++面向对象特性得以实施的基础。