#1.简单对象模型.
#表格驱动模型.
#3.c++对象模型.
其中,只有c++对象模型被各大编译器厂商应用,其实动态语言,如python使用的就是类似简单对象模型,引用!
1. c++对象模型把非静态数据成员放在每一个对象中,静态数据成员,静态函数和非静态成员函数放在对象之外,
2. 对于虚函数的实现:
1. 由类产生一个虚表(vtbl), 表中存放一系列指向虚函数的指针(虚表由类产生!)。
2. 每个对象都被添加一个指向虚函数表的指针(vptr),即虚函数表指针,虚函数表指针的设置由类的构造函
数,析构函数,赋值运算符在编译器内自动完成。
3. 虚函数表由类创建,这就意味着虚函数表不会随类的对象而发生改变,虚函数表指针有类所创建的对象长
生,即由类创建的每个对象都拥有一个只想虚函数表的虚表指针。
4. 每个类所关联的信息type_info(主要用于支持RTTI, 即运行期类型识别)也通常被虚函数表中的指针指
出,该信息常常被放在虚函数表的第一个槽位。
几个应用得比较广泛的几个概念:
- 槽(slot):其实就是一块内存区域。
- 索引值:对象成员的编号。