const_cast-Operator

Entfernt die constAttribute volatileund 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 constQualifizierer , volatileder __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_castZeiger 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

Umwandlungsoperatoren
Schlüsselwörter