Compartir a través de


operador const_cast

quita const, volatile, y los atributos de __unaligned de una clase.

const_cast < type-id > ( expression )

Comentarios

Un puntero a cualquier tipo de objeto o un puntero a un miembro de datos se puede convertir explícitamente a un tipo que sea idéntico a excepción de const, de volatile, y los calificadores de __unaligned .Para los punteros y las referencias, el resultado hará referencia al objeto original.Para los punteros a miembros de datos, el resultado hará referencia al mismo miembro que el puntero original (de uncast) al miembro de datos.Dependiendo del tipo de objeto hace referencia, una operación de escritura a través del puntero resultante, la referencia, o el puntero a miembro de datos podrían generar un comportamiento indefinido.

No puede utilizar el operador de const_cast para reemplazar directamente el estado constante de una variable constante.

El operador de const_cast convierte un valor de puntero null al valor del puntero NULL del tipo de destino.

Ejemplo

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

En la línea que contiene const_cast, el tipo de datos de puntero de this es const CCTest *.El operador de const_cast cambia el tipo de datos de puntero de this a CCTest *, lo que modifican el miembro number .La conversión dura sólo para el resto de la instrucción en la que aparece.

Vea también

Referencia

Operadores de conversión

Palabras clave de C++