C++对象模型学习心得

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运算符自动完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值