1.1 对象模型

来源:互联网 发布:2014年马刺数据 编辑:程序博客网 时间:2024/06/05 18:58

Q1: C++ 的类有两种数据成员:static 数据成员与 nonstatic 数据成员, 有三种成员函数:static, nonstatic,virtual。

Q2: 在虚继承的情况下,base class不管在继承串链中被派生多少次,永远只会存在一个实例(称为subobject)。

Q3: C++对象模型。

每个对象之内:
①.Nonstatic 数据成员
②.指向 vitual table 的指针 ( vptr ) ——其设定与重置由构造函数,析构函数与 copy assignment 运算符自动完成

个体对象之外:
①.static 数据成员
②.static 与 nonstatic 成员函数

Virtual Table:
每一个类产生一堆指向 virtual function 的指针,放在表格中,该表格被称为 virtual table

继承类关系:
假设存在一个 base class table ,该表格中每个slot内含一个相关的 base class 的地址,这样每个类对象中会含有一个 bptr,指向该base class table

** 使用指针或者 table 将引入间接性。间接性的缺点:空间与存取时间上的额外负担。间接性的优点:类对象的大小不会因为其base class的改变而受到影响

0 0