2010-10-17 44 views
10

lý do tại sao hoặc vì lý do nào là không thể khai báo biến thành viên của lớp trong C++ là static mutable? Một cái gì đó nhưbiến thành viên có thể thay đổi tĩnh trong C++?

static mutable int t; //This won't compile 

Đối với tôi, không có lý do gì để cấm tuyên bố như vậy. Ví dụ. vì các lý do như duy trì một số liệu thống kê toàn lớp, có thể thuận tiện để có biến tĩnh có thể được thay đổi bằng phương thức const (logic). Vì vậy, hoặc là điều này là loại một misdesign trong C + + và không cần thiết phức tạp, hoặc có một lý do thực tế hoặc lý thuyết mà tôi không thể nhìn thấy.

Trả lời

23

Thành viên tĩnh không const của lớp có thể đã được sửa đổi theo bất kỳ phương pháp (const và không const) nào của lớp. Không cần thiết và không có điểm tuyên bố nó với mutable. Điều đó sẽ đạt được hoàn toàn không có gì.

1

Từ khóa có thể thay đổi cho phép hàm "const" và do đó thành viên không tĩnh thay đổi các biến thành viên không tĩnh được đánh dấu như vậy (tức là, có thể thay đổi). Các hàm tĩnh không thể là const và const các hàm thành viên có thể thay đổi các thành viên tĩnh không const. Tôi biết điều này hơi khó hiểu, nhưng đó là vì điều này mà không cần phải cho phép biến thành viên tĩnh có thể thay đổi được.

Các vấn đề liên quan