Tôi mới sử dụng Delphi và tôi đã chạy một số thử nghiệm để xem biến đối tượng và biến ngăn xếp nào được khởi tạo theo mặc định:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Đây là hành vi tôi đã quen với các ngôn ngữ khác, nhưng tôi đang tự hỏi liệu có an toàn khi dựa vào nó trong Delphi không? Ví dụ: tôi đang tự hỏi liệu nó có thể phụ thuộc vào cài đặt trình biên dịch hay có thể hoạt động khác nhau trên các máy khác nhau hay không. Có bình thường không khi dựa vào các giá trị được khởi tạo mặc định cho các đối tượng, hay bạn đặt rõ ràng tất cả các biến phiên bản trong hàm tạo?
Đối với các biến ngăn xếp (cấp độ thủ tục), các thử nghiệm của tôi cho thấy rằng các boolean đơn nguyên là đúng, các số nguyên đơn nguyên là 2129993264 và các đối tượng không được phủ nhận chỉ là các con trỏ không hợp lệ (tức là không phải nil). Tôi đoán tiêu chuẩn là luôn đặt các biến mức thủ tục trước khi truy cập chúng?