我是Delphi的新手,并且已经在运行一些测试以查看默认情况下将哪些对象变量和堆栈变量初始化为:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
这是我习惯于其他语言的行为,但是我想知道在Delphi中依靠它是否安全?例如,我想知道它是否取决于编译器设置,或者在不同机器上的工作方式是否不同。依靠对象的默认初始化值是正常的,还是在构造函数中显式设置所有实例变量?
至于堆栈(过程级)变量,我的测试表明,布尔化的布尔值是真实的,整数化的是2129993264,未初始化的对象只是无效的指针(即不是nil)。我猜测规范是总是在访问它们之前设置过程级变量?