Bạn nên tham khảo các "CAO · LIÊM C++ mã hóa tiêu chuẩn HƯỚNG DẪN" cho biết khi nào nó được khuyến khích để sử dụng công cụ sửa đổi const cho các thành viên của lớp học:
Quy tắc CPP chính trực cao 3.1.8: Khai báo 'const' bất kỳ hàm thành viên lớp nào không sửa đổi trạng thái hiển thị bên ngoài của đối tượng. (QACPP 4211, 4214)
biện minh: Mặc dù ngôn ngữ thực thi bit const đúng đắn, const đúng đắn nên được coi là logic, chứ không phải bitwise. Một hàm thành viên sẽ được khai báo const nếu không thể cho một máy khách xác định xem đối tượng có thay đổi như là kết quả của việc gọi hàm đó hay không. Từ khóa 'có thể thay đổi' có thể được sử dụng để khai báo dữ liệu thành viên có thể được sửa đổi trong các hàm const, điều này chỉ nên được sử dụng khi dữ liệu thành viên không ảnh hưởng đến trạng thái hiển thị bên ngoài của đối tượng.
class C
{
public:
const C& foo() { return * this; } // should be declared const
const int& getData() { return m_i; } // should be declared const
int bar() const { return m_mi; } // ok to declare const
private:
int m_i;
mutable int m_mi;
};
Tham chiếu Hiệu quả C++ Mục 21, Sức mạnh công nghiệp C++ 7.13;
Ok, tôi lấy lại câu trả lời của tôi, máy của bạn rõ ràng hơn nhiều. –