我在一个深度类层次结构的基类中添加了一个类变量。它是一个整数,用于计算每个类类型创建的实例数量。但我遇到了一个问题。
给出以下示例:
TBaseClass = class
private
class var fCreated: integer;
public
class function NewInstance: TObject; override;
end;
TDescendant = class(TBaseClass)
end;
...
class function TBaseClass.NewInstance: TObject;
begin
result := inherited NewInstance;
inc(fCreated);
end;
我以为可以使用类变量来存储每个类创建的实例数量,但似乎情况并非如此。
检查 TBaseClass.fCreated
的返回值与 TDescendant.fCreated
相同,通过更改一个观察器来更改另一个,因此它的行为就像是一个单一的全局变量 fCreated
。
我期望 fCreated
能够针对每个类类型进行维护,这不是重点吗?我错过了什么?