深度探索C++对象模型<一>

开始看这本神书,做一些笔记:

简单对象模型

第一个模型很简单,一个对象是由一系列slots组成,但是成员(对象和函数)都不是放在对象内的,而是把指针放在对象内,通常来说这不被应用于实际产品。

img

表格驱动对象模型

存储两个指针,分别指向data member table和function member table

img

C++对象模型

来看看重头戏——C++对象模型。有几个需要注意的:

  • 非静态数据成员放在类的对象中;

  • 静态数据成员和成员函数放在类对象之外;

  • 至于虚函数,则需要从类和对象两个方面考虑:每一个类都会有一个相关联的虚函数表;每一个对象都会有一个指针指向虚函数表,而表中的第一个slot通常是type_info object;

img