注意,一个是“类”的函数,一个是“对象”的函数。类是一种数据类型,而对象则是这种数据类型的变量——类的实例化。类和对象的关系,与整数和整型变量的关系是一样的。
这句话的意思是,构造函数是调用“类”的代码,而析构函数调用的是“对象”的代码。
举例来说:
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调用的是不同的地址。