Điều gì sẽ là trạng thái của một con trỏ đối tượng khi một hàm tạo lớp mới ném một ngoại lệ trong C++? Hãy lấy đoạn mã sau, ví dụ:Trạng thái con trỏ đối tượng Sau khi phát hiện ra constructor ném ngoại lệ - C++
CMyClass * pobjMyClass = (CMyClass *)0xA5A5A5A5;
try
{
pobjMyClass = new CMyClass(); // Exception thrown in constructor
}
catch (...) {}
Khi mã này thực thi giá trị của pobjMyClass
là gì, sau khi ngoại lệ được ném? Một con trỏ đến một phiên bản không hợp lệ của CMyClass
, 0xA5A5A5A5
, NULL
, một số giá trị ngẫu nhiên chưa được khởi tạo, hoặc một cái gì đó khác? Cảm ơn.
Chắc chắn bạn đã thử điều này? – TonyK
@TonyK, việc thử mọi thứ chỉ cung cấp một nửa câu trả lời - cách hoạt động trên * trình biên dịch * của bạn. Nó thường hữu ích để biết làm thế nào nó hoạt động phổ quát. C++ đầy những cạm bẫy, và thật tốt khi thận trọng. –
Mặc dù vậy, Mark - chắc chắn Jim đã dùng thử? Chuyện gì đã xảy ra? – TonyK