Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11578
  • 博文数量: 10
  • 博客积分: 420
  • 博客等级: 下士
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 15:42
文章分类
文章存档

2010年(10)

我的朋友
最近访客

分类: C/C++

2010-08-03 13:32:27

class test

{

 int a;

int b;

int add(int a1,int a2);

 virtual print();

static int getobjnum();

static int num;

};

假设有上面类test,声明一个test的对象,test类对象里面包含的内容有:

指向虚函数表的指针pvtable

a

b

所以如果 test t1;sizeof(t1)=12;

那么虚函数表,静态变量num存放在哪里呢?

 其实类中的虚函数表和静态变量时作为全局变量存储的。

附加说下Windows PE文件,PE文件中保存了导入函数表和导出函数表,例如一个DLL,如果有导出函数,就会保存有导出函数表,如果一个exe程序调用了该DLL的导出函数,则在这个exe文件会有一个导入表,导入表记录的是DLL导出函数的地址。 另外如果一个DLL里面声明了一个导出类,该类有虚函数表,则虚函数表也会被导出,但是主程序exe只使用这一份虚函数表,不会自己复制一份。

阅读(274) | 评论(0) | 转发(0) |
0

上一篇:函数调用

下一篇:Python格式化输出

给主人留下些什么吧!~~