Некоторое время назад я наткнулся на код, который помечал член данных класса ключевым словом mutable. Насколько я понимаю, он просто позволяет вам изменять элемент в методе члена, квалифицированном const:
Код: Выделить всё
class Foo
{
private:
mutable bool done_;
public:
void doSomething() const { ...; done_ = true; }
};
Это единственное использование этого ключевого слова или оно нечто большее, чем кажется на первый взгляд? С тех пор я использовал эту технику в классе, помечая boost::mutex как изменяемый, позволяя функциям const блокировать его из соображений потокобезопасности, но, честно говоря, это похоже на хакерство.
Подробнее здесь:
https://stackoverflow.com/questions/105 ... -member-to