【发布时间】:2025-12-10 23:45:01
【问题描述】:
我已将类变量添加到深层类层次结构的基类中。它是一个整数,用于计算每个类类型创建的实例数。但是我遇到了问题。
举个例子:
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;
我假设我可以使用类 var 来存储每个类创建的实例数,但事实似乎并非如此。
检查TBaseClass.fCreated 返回与TDescendant.fCreated 相同的值,通过检查器更改一个会更改另一个,因此它的行为就像fCreated 是一个单一的全局变量。
我希望 fCreated 为每个班级类型维护,这不是重点吗?我错过了什么?
【问题讨论】: