629 Stimmen

Hat das Schlüsselwort "mutable" einen anderen Zweck als die Änderung der Variablen durch eine const-Funktion zu ermöglichen?

Vor einiger Zeit stieß ich auf einen Code, der eine Mitgliedsvariable einer Klasse mit der mutable Stichwort. Soweit ich sehen kann, erlaubt es Ihnen einfach, eine Variable in einer const Methode:

class Foo  
{  
private:  
    mutable bool done_;  
public:  
    void doSomething() const { ...; done_ = true; }  
};

Ist dies die einzige Verwendung dieses Schlüsselworts oder steckt mehr dahinter, als man denkt? Ich habe diese Technik in einer Klasse verwendet, indem ich eine boost::mutex als veränderbar, so dass const Funktionen, um sie aus Gründen der Thread-Sicherheit zu sperren, aber um ehrlich zu sein, fühlt sich das ein bisschen wie ein Hack an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X