const_cast – operátor
Odebere z const
třídy atributy , volatile
a __unaligned
atributy.
Syntaxe
const_cast <type-id> (expression)
Poznámky
Ukazatel na jakýkoli typ objektu nebo ukazatel na datový člen lze explicitně převést na typ, který je shodný s výjimkou const
, volatile
a __unaligned
kvalifikátory. 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ý ukazatel, odkaz nebo ukazatel na datový člen mít za následek nedefinované chování.
Operátor nelze použít const_cast
k přímému přepsání stavu konstanty proměnné.
Operátor const_cast
převede hodnotu ukazatele null na hodnotu nulového ukazatele cílového typu.
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 const_cast
datový typ this
ukazatele je const CCTest *
. Operátor const_cast
změní datový typ this
ukazatele na CCTest *
, což umožňuje úpravu členu number
. Toto přetypování trvá pouze po zbytek příkazu, ve kterém se zobrazí.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro