opérateur de const_cast
Supprime const, volatile, les attributs et de __unaligned d'une classe.
const_cast < type-id > ( expression )
Notes
Un pointeur à tout type d'objet ou un pointeur vers une donnée membre ne peut être explicitement converti en un type qui est identique à l'exception const, volatile, les qualificateurs et de __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 membres de données, le résultat fait référence au même membre que le pointeur d'origine (d'uncast) au membre de données.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 peuvent entraîner un comportement indéfini.
Vous ne pouvez pas utiliser l'opérateur d' const_cast pour substituer directement à l'état constant d'une variable constante.
L'opérateur d' const_cast convertit une valeur de pointeur null à la valeur du 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 qui contient const_cast, le type de données du pointeur d' this est const CCTest *.L'opérateur d' const_cast modifie le type de données du pointeur d' this à CCTest *, ce qui permet number membre à modifier.Le cast dure uniquement le reste de l'instruction dans laquelle il s'affiche.