Operator const_cast

Usuwa atrybuty const, volatilei __unaligned z klasy .

Składnia

const_cast <type-id> (expression)

Uwagi

Wskaźnik do dowolnego typu obiektu lub wskaźnika do elementu członkowskiego danych można jawnie przekonwertować na typ, który jest identyczny z wyjątkiem constkwalifikatorów , volatilei __unaligned . W przypadku wskaźników i odwołań wynik będzie odwoływać się do oryginalnego obiektu. W przypadku wskaźników do elementów członkowskich danych wynik będzie odnosić się do tego samego elementu członkowskiego co oryginalny wskaźnik (emisja) do elementu członkowskiego danych. W zależności od typu przywoływanego obiektu operacja zapisu za pośrednictwem wynikowego wskaźnika, odwołania lub wskaźnika do elementu członkowskiego danych może spowodować niezdefiniowane zachowanie.

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

Operator const_cast konwertuje wartość wskaźnika null na wartość wskaźnika null typu 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_castwartość , typ this danych wskaźnika to const CCTest *. Operator const_cast zmienia typ this danych wskaźnika na CCTest *, co umożliwia zmodyfikowanie elementu członkowskiego number . Rzutowanie trwa tylko dla pozostałej części instrukcji, w której się pojawia.

Zobacz też

Operatory rzutowania
Słowa kluczowe