Udostępnij za pośrednictwem


Operator const_cast

Usuwa z klasy atrybuty const, volatile i __unaligned.

const_cast < type-id > ( expression )

Uwagi

Wskaźnik do dowolnego typu obiektu lub wskaźnik do elementu członkowskiego danych mogą być jawnie przekonwertowane na typ, który jest identyczny, z wyjątkiem kwalifikatorów const, volatile i __unaligned.Dla wskaźników i odwołań, wynik będzie odwoływać się do oryginalnego obiektu.Dla wskaźników do elementów członkowskich danych, wynik będzie odwoływać się do tego samego elementu członkowskiego co oryginalny (nierzutowany) wskaźnik do elementu członkowskiego danych.W zależności od typu odwoływanego obiektu, operacja zapisu przez wynikowy wskaźnik, odwołanie lub wskaźnik do elementu członkowskiego danych może powodować niezdefiniowane zachowanie.

Nie możesz użyć operatora const_cast, aby bezpośrednio zastąpić stały stan zmiennej o stałej wartości.

const_cast operator konwertuje wartość wskaźnika do wartości wskaźnika typu miejsca docelowego.

Przykład

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

W wierszu zawierającym const_cast, typ danych wskaźnika this to const CCTest *.Operator const_cast zmienia typ danych wskaźnika this na CCTest *, pozwalając na modyfikację elementu członkowskiego number.Rzutowanie trwa tylko do końca instrukcji w jakiej się pojawiło.

Zobacz też

Informacje

Operatory rzutowania

Słowa kluczowe języka C++