const_cast, opérateur

Supprime le ou volatileles constattributs d’une __unaligned classe.

Syntaxe

const_cast <type-id> (expression)

Notes

Un pointeur vers n’importe quel type d’objet ou pointeur vers un membre de données peut être converti explicitement en un type identique, à l’exception des qualificateurs et __unaligned des constélémentsvolatile. 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 pour remplacer directement l’état const_cast de constante d’une variable constante.

L’opérateur const_cast convertit une valeur de pointeur Null en 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 le const_cast, le type de données du this pointeur est const CCTest *. L’opérateur const_cast modifie le type de données du this pointeur CCTest *, ce qui permet au membre number d’être modifié. Le cast dure uniquement pendant le reste de l'instruction dans laquelle il apparaît.

Voir aussi

Opérateurs de casting
Mots clés