Was bedeutet es, wenn eine Mitgliedsfunktion flüchtig ist? [Duplikat]

8

Normalerweise wird der Spezifizierer const verwendet, um eine konstante Elementfunktion anzugeben. Aber was bedeutet es, wenn das Schlüsselwort volatile verwendet wird?

%Vor%

Das kompiliert für mich gut, aber ich verstehe nicht, wofür das ist. Ich konnte bei meiner Suche keine Informationen darüber finden, daher wird jede Hilfe geschätzt.

Update: Um es klar zu machen, weiß ich, wofür volatile ist. Ich weiß einfach nicht, was es in diesem Zusammenhang bedeutet.

    
0x499602D2 25.05.2013, 03:22
quelle

3 Antworten

12

Das Qualifikationsmerkmal volatile für eine Member-Funktion entspricht dem Qualifikationsmerkmal const . Es erlaubt die Member-Funktion auf volatile objects:

aufgerufen werden %Vor%     
Mankarse 25.05.2013, 03:28
quelle
9

Bei einer Mitgliedsfunktion gelten die const und volatile Qualifikationsmerkmale für *this . Der Zugriff auf Instanzelemente innerhalb dieser Memberfunktion wäre dann volatile accesses mit derselben Semantik wie jede Variable volatile . Insbesondere können nicht- volatile -Memberfunktionen nicht für ein volatile -Objekt aufgerufen werden, und volatile gilt für das Überladen auf die gleiche Weise wie const :

%Vor%     
Jon Purdy 25.05.2013 03:28
quelle
1

Objekte, die als flüchtig deklariert sind, werden in bestimmten Optimierungen nicht verwendet, da sich ihre Werte jederzeit ändern können. Das System liest immer den aktuellen Wert eines flüchtigen Objekts an dem Punkt, an dem es angefordert wird, selbst wenn eine vorherige Anweisung einen Wert von demselben Objekt angefordert hat. Außerdem wird der Wert des Objekts sofort bei der Zuweisung geschrieben.

Ein flüchtiges Objekt kann nur flüchtige Elementfunktionen aufrufen.

Wenn Sie also die Elementfunktion als flüchtig markieren, würden Sie den Zugriff auf die nicht statischen Datenelemente des Objekts innerhalb dieser Elementfunktion als flüchtig festlegen.

    
TelKitty 25.05.2013 03:38
quelle

Tags und Links