Chỉ là lời khai của tôi.
Một vài năm trước, tôi vẫn còn chống lại việc sử dụng const, chỉ vì những hạn chế trong thiết kế và viết chữ ký chức năng còn ... và vân vân ...
Nhưng một trong những nhà lãnh đạo dự án của tôi luôn luôn nhấn mạnh , luôn luôn nhắc nhở tôi: "Bạn nên sử dụng chức năng const, nó tránh tai nạn và làm không có ý nghĩa".
Và một ngày tôi gặp phải lỗi không thể để tìm. Ngày qua ngày sau ngày ... Một cơn ác mộng. Thiết kế quá lớn đối với tôi, vì vậy tôi có thể hiểu nó. Tôi đã tìm kiếm vô ích cho đến khi tôi quyết định tôi bị lạc.
Sau đó, tôi đã dành hai ngày định nghĩa lại TẤT CẢ các chức năng phải là const. Ý tôi là, hai ngày. (Recompilations miễn là nó là 5 triệu dòng mã dự án).
Và sau đó: chỉ đơn giản là tôi tìm thấy lỗi ... thay vì Compiler tìm thấy lỗi cho tôi: Trong một phương pháp getter giống như, nên đã cho tôi kích thước ưa thích của một điều khiển gui, mã đã thực sự tính toán kích thước, nhưng nó cũng là bộ nhớ đệm kích thước của nó và cập nhật kích thước của nó ... Vì vậy, sửa đổi các đối tượng.
Bây giờ, đôi khi tôi quên đặt const. Nhưng nếu tôi nhận thấy nó, tôi sửa nó.
Nguồn
2011-01-14 13:23:11
Ngoài ra, bạn có thể quá tải các chức năng chỉ trên bộ định danh 'const' của hàm. Điều này cho phép, ví dụ, một toán tử chỉ mục tự động trả về phần tử theo cách chỉ đọc * nếu đối tượng được khai báo là 'const'. [* chỉ đọc chỉ áp dụng tại thời gian biên dịch. 'const' không thể làm bất cứ điều gì trong thời gian chạy] – Mephane
+1 cho const-correctness. không ai khác đề cập đến nó –
Tôi đang suy nghĩ về tuyên bố của bạn "const là mặc định, và có thể thay đổi cho không liên tục". Có vẻ như một vị trí cực đoan, nhưng tôi sẽ cố gắng cảm nhận những gì tôi nghĩ về nó. –