1
p22
<1>.layout :布局,object在内存中的数据分布。
<2>.object : 对象,更加class的声明,在内存中占有内存的实体。
<3>.offset : 偏移位置
<4> reference : &
<5> virtrual table : 为实现虚拟机制而设计的一种表格,存放虚函数的地址。
<6>subtype : 子类型
<7>resolve : 决议, 函数调用时,链接器进行的一种操作。
<8>slot : 表格中的一格(一个元素)条目,条格
<9>virtural function : 用以支持一个有效率的执行时绑定,(runtime binding)
<10>virtual base class : 共享的实体
<11> implicitly : 暗中的
<12>trivial :浅薄而无能的,无用的
2.软件组件 (COM,CORBA, SOM)
第一章 关于对象
1.用宏代替打印函数 ,效率更高
#include <stdio.h>
#include <string>
typedef struct TAG_STRUCT_3DATA
{
float fA;
float fB;
int iC;
}STRUCT_3DATA;
#define PRINT_DATA(pstData)\
printf("%f, %f, %d\n", pstData->fA, pstData->fB, pstData->iC);
int main()
{
STRUCT_3DATA *pstData = (STRUCT_3DATA *)malloc(sizeof(STRUCT_3DATA));
memset(pstData, 0, sizeof(STRUCT_3DATA));
pstData->fA = 2;
pstData->fB = 22.1;
pstData->iC = 33;
PRINT_DATA(pstData);
return 0;
}
2. 在简单模型中,一个object 就是一系列的slots,每个slot指向一个member,members按其声明顺序各被指定一个slot。
每一个data member 和function member 都一个自己的slot。
3.member 本身不放在object 中,只有指向member的指针才放在 object中。这样可以解决 不同的members 有不同的存储存储空间。
4.每个类产生一堆指向virtual function的指针,放在一个表格中,virtual table(vtbl)。
5.每个 class object 被添加一个指针,指向virtual table , vptr, vptr 虚函数指针的 设置(seting)和重设置(reseting)都是由constructor和deconstructor,copy assignment运算符自动完成。