Share via


Operatore const_cast

Rimuove gli constattributi , volatilee __unaligned da una classe .

Sintassi

const_cast <type-id> (expression)

Osservazioni:

Un puntatore a qualsiasi tipo di oggetto o puntatore a un membro dati può essere convertito in modo esplicito in un tipo identico, ad eccezione dei constqualificatori , volatilee __unaligned . Per i puntatori e i riferimenti, il risultato farà riferimento all'oggetto originale. Per i puntatori ai membri dati, il risultato farà riferimento allo stesso membro del puntatore originale (uncast) al membro dati. A seconda del tipo di oggetto a cui si fa riferimento, un'operazione di scrittura tramite il puntatore risultante, il riferimento o il puntatore al membro dati potrebbe produrre un comportamento non definito.

Non è possibile usare l'operatore per eseguire direttamente l'override const_cast dello stato costante di una variabile costante.

L'operatore const_cast converte un valore del puntatore Null nel valore del puntatore Null del tipo di destinazione.

Esempio

// 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();
}

Nella riga contenente , const_castil tipo di dati del this puntatore è const CCTest *. L'operatore const_cast modifica il tipo di dati del this puntatore in CCTest *, consentendo la modifica del membro number . Il cast dura solo per il resto dell'istruzione in cui viene visualizzato.

Vedi anche

Operatori di cast
Parole chiave