ฉันเพิ่งเริ่มใช้ 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;
นี่เป็นพฤติกรรมที่ฉันคุ้นเคยกับภาษาอื่น แต่ฉันสงสัยว่าจะปลอดภัยหรือไม่ที่จะพึ่งพาภาษาเดลฟี? ตัวอย่างเช่นฉันสงสัยว่าอาจขึ้นอยู่กับการตั้งค่าคอมไพเลอร์หรืออาจทำงานแตกต่างกันไปในเครื่องอื่น เป็นเรื่องปกติหรือไม่ที่จะใช้ค่าเริ่มต้นที่เป็นค่าเริ่มต้นสำหรับอ็อบเจ็กต์หรือคุณตั้งค่าตัวแปรอินสแตนซ์ทั้งหมดในคอนสตรัคเตอร์อย่างชัดเจน
สำหรับตัวแปรสแต็ก (ระดับขั้นตอน) การทดสอบของฉันแสดงให้เห็นว่าบูลีนที่มีการแปลงหน่วยเป็นจริงจำนวนเต็มหน่วยคือ 2129993264 และวัตถุที่ไม่ได้กำหนดค่าเริ่มต้นเป็นเพียงตัวชี้ที่ไม่ถูกต้อง (เช่นไม่ใช่ศูนย์) ฉันเดาว่าบรรทัดฐานคือต้องตั้งค่าตัวแปรระดับขั้นตอนก่อนเข้าถึงเสมอหรือไม่?