const_cast Operator
Entfernt const, volatileund __unaligned-Attribute einer Klasse.
const_cast < type-id > ( expression )
Hinweise
Ein Zeiger auf einen beliebigen Objekttyp oder ein Zeiger auf einen Datenmember können explizit in einen Typ konvertiert werden, der mit Ausnahme const, volatile**__unaligned** und Qualifizierer identisch ist.Ein Zeiger und Referenzen verweist das Ergebnis an das ursprüngliche Objekt.Ein Zeiger auf den Datenmember verweist das Ergebnis dieselben Member wie der ursprüngliche (uncast) Zeiger auf den Datenmember an.Abhängig vom Typ des Objekts, auf das verwiesen wird, erzeugten ein Schreibvorgang möglicherweise von den resultierenden Zeiger oder Verweis Zeiger auf den Datenmember nicht definiertes Verhalten.
Sie können den const_cast-Operator nicht verwenden, um den konstanten Status einer konstanten Variablen direkt zu überschreiben.
Der const_cast-Operator konvertiert einen NULL-Zeiger-Wert zum NULL-Zeiger-Wert 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();
}
Auf der Zeile, die const_castenthält, ist der Datentyp des this Zeigers const CCTest *.Der const_cast-Operator ändert den Datentyp des this Zeigers auf CCTest *und ermöglicht Mitgliedern number geändert werden soll.Die Umwandlungs letzten nur für den Rest der Anweisung mit sofortiger Wirkung.