const_cast-Operator
Entfernt die const
Attribute volatile
und Attribute __unaligned
aus einer Klasse.
Syntax
const_cast <type-id> (expression)
Hinweise
Ein Zeiger auf einen beliebigen Objekttyp oder zeiger auf ein Datenelement kann explizit in einen Typ konvertiert werden, der mit Ausnahme der const
Qualifizierer , volatile
der __unaligned
identisch ist. Für Zeiger und Verweise verweist das Ergebnis auf das ursprüngliche Objekt. Für Zeiger auf Datenmember, verweist das Ergebnis auf denselben Member wie der ursprüngliche (uncast) Zeiger auf Datenmember. Je nach Typ des verweisenden Objekts, führt ein Schreibvorgang durch den resultierenden Zeiger, Verweis oder Zeiger auf Datenmember möglicherweise zu nicht definiertem Verhalten.
Sie können den Operator nicht verwenden, um den const_cast
Konstantenstatus einer Konstantenvariablen direkt außer Kraft zu setzen.
Der const_cast
Operator konvertiert einen Nullzeigerwert in den Nullzeigerwert des Zieltyps.
Beispiel
// expre_const_cast_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class CCTest {
public:
void setNumber( int );
void printNumber() const;
private:
int number;
};
void CCTest::setNumber( int num ) { number = num; }
void CCTest::printNumber() const {
cout << "\nBefore: " << number;
const_cast< CCTest * >( this )->number--;
cout << "\nAfter: " << number;
}
int main() {
CCTest X;
X.setNumber( 8 );
X.printNumber();
}
In der Zeile, die den const_cast
Zeiger enthält, ist const CCTest *
der Datentyp des this
Zeigers . Der const_cast
Operator ändert den Datentyp des this
Zeigers auf CCTest *
, sodass das Element number
geändert werden kann. Die Umwandlung erfolgt nur für den Rest der Anweisung, in der er angezeigt wird.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für