Một cách khác để xem xét nó: ý nghĩa chính xác của con trỏ const là bạn sẽ không thể thực hiện các thay đổi đối với đối tượng trỏ tới sẽ được hiển thị qua con trỏ đó hoặc bất kỳ con trỏ nào khác hoặc tham chiếu đến cùng một đối tượng. Nhưng khi một đối tượng bị hủy, tất cả các con trỏ khác đến địa chỉ mà đối tượng đã bị xóa trước đó chiếm giữ không còn là con trỏ đến đối tượng đó nữa. Chúng lưu trữ cùng một địa chỉ, nhưng địa chỉ đó không còn là địa chỉ của bất kỳ đối tượng nào (trên thực tế, nó có thể sớm được sử dụng lại làm địa chỉ của một đối tượng khác).
Sự khác biệt này sẽ rõ ràng hơn nếu các con trỏ trong C ++ hoạt động như các tham chiếu yếu, tức là ngay sau khi đối tượng bị phá hủy, tất cả các con trỏ còn tồn tại đến nó sẽ ngay lập tức được đặt thành 0
. (Đó là loại thứ được coi là quá tốn kém trong thời gian chạy để áp đặt cho tất cả các chương trình C ++ và trên thực tế là không thể làm cho nó hoàn toàn đáng tin cậy.)
CẬP NHẬT : Đọc lại điều này chín năm sau, đó là luật sư. Bây giờ tôi thấy phản ứng ban đầu của bạn có thể hiểu được. Không cho phép đột biến nhưng cho phép phá hủy rõ ràng là có vấn đề. Hợp đồng ngụ ý của các con trỏ / tham chiếu const là sự tồn tại của chúng sẽ hoạt động như một khối phá hủy đối tượng đích, hay còn gọi là thu gom rác tự động.
Giải pháp thông thường cho điều này là sử dụng hầu hết các ngôn ngữ khác để thay thế.