Partager via


const_cast, opérateur

Supprime les attributs const, volatile et __unaligned d'une classe.

const_cast < type-id > ( expression )

Notes

Un pointeur vers tout type d'objet ou un pointeur vers une donnée membre peut être converti explicitement en un type identique, sauf pour les qualificateurs const, volatile et __unaligned. Pour les pointeurs et des références, le résultat fait référence à l'objet d'origine. Pour les pointeurs vers des données membres, le résultat fait référence au même membre que le pointeur d'origine (sans cast) vers les données membres. Selon le type de l'objet référencé, une opération d'écriture via le pointeur résultant, la référence, ou le pointeur vers les données membres peut entraîner un comportement non défini.

Vous ne pouvez pas utiliser l'opérateur const_cast pour substituer directement l'état constant d'une variable constante.

L'opérateur const_cast convertit une valeur de pointeur null en la valeur de pointeur null du type de destination.

Exemple

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

Sur la ligne contenant const_cast, le type de données du pointeur this est const CCTest *. L'opérateur const_cast remplace le type de données du pointeur this par CCTest * en autorisant la modification du membre number. Le cast dure uniquement pendant le reste de l'instruction dans laquelle il apparaît.

Voir aussi

Référence

Opérateurs de casting

Mots clés C++