OOP与内存管理的资料

wangunix 2005-06-30 02:59:08
我想找一些讲 OOP程序在内存中的状况的文章。
主要是讲,对象,句柄这些东西,在内存中是什么样的数据结构,等等。
不知道那里有,在CSDN文档中心找了半天,也没有找到。
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangunix 2005-07-04
  • 打赏
  • 举报
回复
Hi Guys
前几天,就是在 csdn中看到一片文章,是专门讲,oop的一些概念在实现的时候在内存中的状态的,
由于当时是在处理另一个问题,所以就没有仔细看,现在再找,就找不到了,
那位弟兄,看到过?
prgmBaggio 2005-07-03
  • 打赏
  • 举报
回复
mark
qrlvls 2005-07-01
  • 打赏
  • 举报
回复
句柄你可以把他看作一个整数,或者一个指针
总之你把他看作一个普通的数据类型就可以了

在应用层他表示某个对象的一个 ID 值
而在系统内核他则表示指向相应对象的指针
qrlvls 2005-07-01
  • 打赏
  • 举报
回复
也就是说,实际上 C++ 编译的思想可以用 C 语言来实现,只不过在语法上完成,而不需要在编码上完成,举例说明:
C++语法:

class A
{
public:
A () { x = 0; }
virtual add(int a, int b) { return a + b; }
void inc() { x ++; }
public:
int x;
}

void main() { A a; a.add(1, 2); a.inc(); }

基本上可以用如下 C 语法表示:

struct A;
typedef int (*AddFunc)(struct A *pObj, int a, int b);

struct A
{
AddFunc pAdd;
int x;
};

int Add(struct A *pObj, int a, int b) { return a + b; }
int Iub(struct A *pObj) { pObj->x ++; }

void main()
{
struct A a;
a.x = 0;
a.pAdd = Add;
a.pAdd(1,2);
a.Inc(&a);
}
qrlvls 2005-07-01
  • 打赏
  • 举报
回复
参考几篇文章:
http://blog.csdn.net/jiangsheng/archive/2005/01/24/265488.aspx
http://dev.csdn.net/article/56/56202.shtm

总的来说对象空间的大致组成实际上为:

每个对象独立的部分:
  虚函数表 + 成员变量 (可以看成一个结构体)
每个对象公有的部分:
  成员函数实际上你可以考虑成第一个参数为结构体指针(对象的this指针)的普通函数
  静态成员
qrlvls 2005-07-01
  • 打赏
  • 举报
回复
CSDN 以前有一些比较基础的文章,你可以搜索一下,估计很难找到专门讲述关于该主题的资料
wangunix 2005-07-01
  • 打赏
  • 举报
回复
有人知道么?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧