const_cast – operátor
Odebere atributy const, volatile a __unaligned třídy.
const_cast < type-id > ( expression )
Poznámky
Ukazatel na libovolný typ objektu nebo ukazatel na datový člen lze explicitně převést na typ, který je totožný s výjimkou kvalifikátorů const, volatile a __unaligned.Pro ukazatele a odkazy bude výsledek odkazovat na původní objekt.Pro ukazatele na datové členy bude výsledek odkazovat na stejný člen jako původní (nepřetypovaný) ukazatel na datový člen.V závislosti na typu odkazovaného objektu mohou operace zápisu skrz výsledného ukazatele, odkaz nebo ukazatel na datový člen mít za následek nedefinované chování.
Operátor const_cast nelze použít pro přímé přepsání konstantního stavu konstantní proměnné.
Operátor const_cast převede hodnotu ukazatele null na hodnotu typu null cílového ukazatele.
Příklad
// 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();
}
Na řádku obsahujícím operátor const_cast je datový typ ukazatele thisconst CCTest *.Operátor const_cast změní datový typ ukazatele this na typ CCTest *, což členu number umožňuje být změněn.Toto přetypování trvá pouze po zbytek výkazu, ve kterém se zobrazí.