Operator const_cast
Usuwa atrybuty const
, volatile
i __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 const
kwalifikatorów , volatile
i __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_cast
wartość , 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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla