Compartilhar via


Operador const_cast

Remove os atributos const, volatile e __unaligned de uma classe.

Sintaxe

const_cast <type-id> (expression)

Comentários

Um ponteiro para qualquer tipo de objeto ou um ponteiro para um membro de dados pode ser convertido explicitamente em um tipo idêntico, exceto pelos qualificadores const, volatile e __unaligned. Para ponteiros e referências, o resultado fará referência ao objeto original. Para ponteiros para membros de dados, o resultado fará referência ao mesmo membro que o ponteiro original (não convertido) para o membro de dados. Dependendo do tipo do objeto referenciado, uma operação de gravação pelo ponteiro, referência ou ponteiro para o membro de dados resultante pode gerar comportamento indefinido.

Você não pode usar o operador const_cast para substituir diretamente o status de constante de uma variáveis constante.

O operador const_cast converte um valor de ponteiro nulo em valor de ponteiro nulo do tipo de destino.

Exemplo

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

Na linha que contém const_cast, o tipo de dados de ponteiro this é const CCTest *. O operador const_cast altera o tipo de dados do ponteiro this para CCTest *, permitindo que o membro number seja alterado. A conversão só durará pelo restante da instrução em que aparece.

Confira também

Operadores de conversão
Palavras-chave