【c++对象模型】


1.C++在布局以及存取时间上的额外负担,主要是由virtual引起的。

(1)virtual function,即执行期绑定;

(2)virtual class base,即基类。

2.表格驱动对象模型

(1)每个class产生出一堆指向virtual function的指针,放在表格之中,这个表格称之为virtual table(Vtbl);

(2)每个class object被添加了一个指针,指向相关的vitural table。通常这个指针被称为vptr。vptr的设定和重置都由每一个class的constructor、destructor和copy assignment运算符自动生成。每个class所关联的type_info object(用以支持runtime type identification,RTTI)也经由virtual table被指出来,通常是放在表格的第一个slot处。

【c++对象模型】【c++对象模型】

3.C++以下列方法支持多态

(1)经由一组隐含的转化操作,如把一个derived class转化为一个指向其base type class的指针。shape *ps = new circle();

(2)virtual function机制;

(3)经由dynamic cast和typed id运算符

if(circle *pc = dynamic cast <circle*> (ps))...



【c++对象模型】

上一篇:网页制作


下一篇:jsp页面只显示EL表达式不显示数据