Sdílet prostřednictvím


const_cast – operátor

Odebere z consttřídy atributy , volatilea __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, volatilea __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_castdatový 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é

Operátory přetypování
Klíčová slova