如何理解下面的话?(0分)

  • 主题发起人 主题发起人 tlzcj
  • 开始时间 开始时间
T

tlzcj

Unregistered / Unconfirmed
GUEST, unregistred user!
调用构造函数的方法与调用析构函数的方法不同,前者使用的是“类的构造函数”,后者使用的是“对象的析构函数”。
 
注意,一个是“类”的函数,一个是“对象”的函数。类是一种数据类型,而对象则是这种数据类型的变量——类的实例化。类和对象的关系,与整数和整型变量的关系是一样的。

这句话的意思是,构造函数是调用“类”的代码,而析构函数调用的是“对象”的代码。

举例来说:

TClass1 = class //假设类的运行期数据地址是 1000
Constractor Create
//假设偏移地址是 0016
Destructor Destroy
//假设偏移地址是 0020
end;

TClass1 A, B;

注意看以上几个假设的地址;
那么,
A := TClass1.Create
//这里Create方法的地址是 类的运行期数据地址1000 + Create 方法的偏移地址 0016,实际的调用地址是 CALL 1016
B := TClass1.Create
//注意CREATE调用的是类的函数,所以对B的CREATE的调用和A是一样的,也是CALL 1016

对象分配好了,A和B都有了实际的地址。假设A对象的地址是0100,B对象的地址是0200。
请注意上面假设的实例地址。

A.Destroy
//这里调用的是 A的实例地址0100 + DESTROY函数的偏移地址0020,实际调用的地址是 CALL 0120
B.Destroy
//这里调用的是 B的实例地址0200 + DESTROY函数的偏移地址0020,实际调用的地址是 CALL 0220

那句话,就是这个意思。CREATE方法调用的是一个地址。而DESTROY调用的是不同的地址。
 
明白了,谢谢。
 
后退
顶部