Static cast = normale type omgjøringer
syntax: static_cast< [new type] >( [expression] )
Const cast = fjerne eller legge til const på en variabel
Dynamic cast = brukt kun for polymorphism, gjøre om pointere/referanser i classer
Reinterpret cast = gjør om fra en type til en annen, bitvise
static_cast
Syntax: a = static_cast<T>(p)
Prøv å konvertere p til T hvis T kan bli konvertert til p's type.
// Gjør 3.14 (float) om til 3 (int)
int i1 = static_cast<int>(3.14);
const_cast
const_cast
brukes til å legge til eller fjerne const
fra en variabel.
Syntax: a = const_cast<T>(p)
int i = 3; // i is not declared const
const int& rci = i;
const_cast<int&>(rci) = 4; // OK: modifies i
// Gjør om fra 'const wchar' til 'wchar'
const wchar_t *p = L"Hei";
wchar_t *p2 = const_cast<wchar_t*>(p);
dynamic_cast
Syntax: a = dynamic_cast<T*>(p)
Syntax: a = dynamic_cast<T&>(*p)
dynamic_cast
brukes kun til polymorphism. Gjøre om pointere og referanser i klasser.
reinterpret_cast
Syntax: a = reinterpret_cast<T>(p)
reinterpret_cast
brukes til å utføre en bitvis konvertering fra p til T. Anbefales ikke å bruke denne da det kan gi uventede resultater.
// Hent verdi lagret i en minneadresse
// <iostream>, <cstdint>
// Minneaddresse
uintptr_t p = 0x00059ffa9c;
// Gjør om uint til int* og hent verdien via dereferanse
int value = *reinterpret_cast<int*>(p);
cout << value;