A awfigsk Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-04 #1 基类及派生类属性和虚方法、动态方法、抽象方法在内存中是如何分配的? 不知哪位DFW能详细指点一下!谢谢!
A awfigsk Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-04 #2 基类及派生类属性和虚方法、动态方法、抽象方法在内存中是如何分配的? 不知哪位DFW能详细指点一下!谢谢!
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-04 #3 呵呵,这不是几句话能搞定的,你到网上搜索一下即可: 《Delphi对象模型》系列文章: http://www.pcbookcn.com/article/1513.htm
陷 陷队之士 Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-04 #4 建立派生类对象时,先给基类分配内存,然后再给派生类中新增部分分配内存。 基类和派生类是内存地址连续的,这就是为什么基类的实力可以调用派生类的方法, 呵呵,有点象父母“有权”审查子女的日记一样,当然,现实生活中这是违法的。 。。。 确实不是一两句能说清楚的。建议你先去学学C++,这可不是走弯路啊,C++的搞明白了, 再回来看Object Pascal的,就象复习功课一样。
建立派生类对象时,先给基类分配内存,然后再给派生类中新增部分分配内存。 基类和派生类是内存地址连续的,这就是为什么基类的实力可以调用派生类的方法, 呵呵,有点象父母“有权”审查子女的日记一样,当然,现实生活中这是违法的。 。。。 确实不是一两句能说清楚的。建议你先去学学C++,这可不是走弯路啊,C++的搞明白了, 再回来看Object Pascal的,就象复习功课一样。
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-05 #5 delphi中类内存分配分成两部分, 一部分是类的VMT表, 其中包含所有虚方法, 接口, 继承父类VMT指针等各种入口指针, 这部分是在编译时就决定了的, 具体内存分配在代码段, 运行时是只读的, 另一部分是类实例所需的内存, 包含类中所用到的所有私有/保护/公有变量, 它的构成就是一个record, 这个record最前面4字节是指向相应VMT表的指针, 以后的内容依据继承关系父类在前, 子类在后根据定义时出现的位置排列. 这部分是运行时动态分配的. 至于类中的静态方法和constructor关键字指明的方法(除非另外指定了virtual/override)则由编译器直接生成了具体的调用代码, 所以你可以认为在运行时根本不存在于类里面.
delphi中类内存分配分成两部分, 一部分是类的VMT表, 其中包含所有虚方法, 接口, 继承父类VMT指针等各种入口指针, 这部分是在编译时就决定了的, 具体内存分配在代码段, 运行时是只读的, 另一部分是类实例所需的内存, 包含类中所用到的所有私有/保护/公有变量, 它的构成就是一个record, 这个record最前面4字节是指向相应VMT表的指针, 以后的内容依据继承关系父类在前, 子类在后根据定义时出现的位置排列. 这部分是运行时动态分配的. 至于类中的静态方法和constructor关键字指明的方法(除非另外指定了virtual/override)则由编译器直接生成了具体的调用代码, 所以你可以认为在运行时根本不存在于类里面.
A awfigsk Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-14 #6 构造函数create是不是要返回一个地址? 析构函数destory不会返回任何值? 这样理解对吗?还请指点,谢谢!
W webwalker Unregistered / Unconfirmed GUEST, unregistred user! 2005-01-22 #7 create主要是调用基类的create函数、设置组件的ComponentStyle属性并将自己设置到组件的属主中作为属主组件的子组件。 Destory主要是销毁所拥有的子组件,然后调用基类的析构函数。
create主要是调用基类的create函数、设置组件的ComponentStyle属性并将自己设置到组件的属主中作为属主组件的子组件。 Destory主要是销毁所拥有的子组件,然后调用基类的析构函数。
A abookdog Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-02 #8 类是内存分配是由编译器编译时确定好的。 当你在创建一个对象时,编译即为该对象分配好内存。