Tôi gặp khó khăn trong việc hiểu đoạn văn sau được trích dẫn từ cppreference về hàm tạo mặc định tầm thường. Tôi đã tìm kiếm stackoverflow nhưng vẫn không nhận được câu trả lời rõ ràng. Vì vậy, xin vui lòng giúp đỡ.
Một constructor mặc định tầm thường là một constructor thực hiện không có hành động. Tất cả các loại dữ liệu tương thích với ngôn ngữ C (loại POD) đều có thể xây dựng mặc định. Tuy nhiên, không giống như trong C, các đối tượng có hàm tạo mặc định tầm thường không thể được tạo bằng cách đơn giản diễn giải lại bộ lưu trữ được căn chỉnh phù hợp, chẳng hạn như bộ nhớ được cấp phát với std :: malloc: vị trí mới được yêu cầu để chính thức giới thiệu một đối tượng mới và tránh hành vi không xác định tiềm năng.
Cụ thể, nếu hàm tạo mặc định tầm thường không làm gì, tại sao chúng ta không thể diễn giải lại bộ lưu trữ và giả vờ có một đối tượng với kiểu đã cho? Bạn có thể vui lòng cung cấp một số ví dụ cho hành vi không xác định tiềm năng mà điều này sẽ gây ra?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;
. C ++ có khái niệm về các đối tượng và tuổi thọ đối tượng, được chỉ định trên máy trừu tượng và chỉ vì không có lệnh CPU để tạo đối tượng từ bộ lưu trữ không có nghĩa là không có sự khác biệt trên máy trừu tượng.