A logically constant class instance is one that's externally constant but internally variable (a class instance that's also internally constant is physically constant).
Because logical constness is a useful idea, and because const-casting behavior is implementation dependent, C++ supports the mutable keyword to mark instance fields that are never constant, even if the containing instance is.
The mutable keyword provides a more reliable way to count method calls
class C {
public:
bool C::find(int value) const {
find_count++;
return fnd(value);
}
private;
mutable unsigned find_count;
};
Even though C::find() is marked const, find_count is marked
mutable and the code compiles without further adjustments.
This page last modified on 6 April 2004.