我是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 中是否可以依赖它?例如,我想知道它是否可能取决于编译器设置,或者在不同的计算机上工作方式不同。您是否可以仅仅依赖默认初始化值来创建对象,还是需要在构造函数中显式地设置所有实例变量?
至于堆栈(过程级)变量,我的测试显示未初始化的布尔值为 true,未初始化的整数为 2129993264,未初始化的对象只是无效指针(即非 nil)。我猜想通常情况下应该在访问之前总是要先给过程级变量设置初值,对吗?