Heim > Backend-Entwicklung > C++ > Über Const-Member-Funktionen hinaus: Welche anderen Verwendungszwecke hat das Schlüsselwort „mutable' in C?

Über Const-Member-Funktionen hinaus: Welche anderen Verwendungszwecke hat das Schlüsselwort „mutable' in C?

Linda Hamilton
Freigeben: 2024-12-10 07:04:15
Original
399 Leute haben es durchsucht

Beyond Const Member Functions: What Other Uses Does the `mutable` Keyword Have in C  ?

Hat „mutable“ über veränderliche Member in Const-Member-Funktionen hinaus weitere Anwendungen?

Das Schlüsselwort „mutable“ in C ermöglicht das Ändern von Datenmembern in const-Memberfunktionen. Einige fragen sich jedoch vielleicht, ob es einen anderen Zweck hat.

In Wirklichkeit unterscheidet das Schlüsselwort „veränderlich“ zwischen bitweisem und logischem „const“. Logisch „const“ gibt an, dass sich ein Objekt über seine öffentliche Schnittstelle nicht sichtbar ändert. Dazu gehören Szenarien wie das Sperren eines Mutex in einer const-Funktion zur Thread-Sicherheit, da die Änderung innerhalb des internen Zustands des Objekts erfolgt und von außen nicht zugänglich ist.

Eine andere Anwendung speichert berechnete Werte zwischen und greift über eine veränderbare Mitgliedsfunktion auf sie zu. Eine solche Funktion kann den Wert einmal abrufen und speichern, wobei die logische „Konstante“ beibehalten wird und dennoch interne Änderungen möglich sind.

Darüber hinaus führte C 11 veränderliche Lambdas ein. Diese ermöglichen die Änderung erfasster Variablen, die normalerweise durch Werte referenziert werden. Zum Beispiel:

int x = 0;
auto f1 = [=]() mutable {x = 42;};  // OK
auto f2 = [=]()         {x = 42;};  // Error
Nach dem Login kopieren

Hier schlägt „f2“ fehl, weil nicht veränderbare Lambda-Erfassungen nicht veränderbar sind. Daher ermöglicht „mutable“ nicht nur die Änderung von Membern in const-Memberfunktionen, sondern erstreckt sich auch auf die Unterscheidung zwischen bitweisem und logischem „const“ und erleichtert die Datenänderung in veränderlichen Lambdas.

Das obige ist der detaillierte Inhalt vonÜber Const-Member-Funktionen hinaus: Welche anderen Verwendungszwecke hat das Schlüsselwort „mutable' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage