您的位置:首页 > 编程语言 > C语言/C++

【c++对象模型】

2014-02-25 16:00 369 查看
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处。



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++ virtual