Оператор const_cast

Удаляет атрибуты const, volatile и __unaligned из класса.

const_cast < type-id > ( expression )

Заметки

Указатель на любой тип объекта или на данные-член можно явно преобразовать в идентичный тип, за исключением квалификаторов const, volatile и __unaligned. Для указателей и ссылок результат будет указывать на исходный объект. Для указателей на данные-члены результат будет указывать на тот же член, что и исходный указатель (uncast) на данные-член. В зависимости от типа объекта, на который осуществляется ссылка, операция записи с помощью результирующего указателя, ссылки или указателя на данные-член может привести к неопределенному поведению.

Оператор const_cast невозможно использовать для непосредственного переопределения постоянного состояния константной переменной.

Оператор const_cast преобразует значение пустого указателя в значение пустого указателя конечного типа.

Пример

// 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();
}

В строке, содержащей оператор const_cast, тип данных указателя this — const CCTest *. Оператор const_cast изменяет тип данных указателя this на CCTest *, разрешая изменение члена number. Приведение выполняется только для оставшейся части оператора, в котором оно указано.

См. также

Ссылки

Операторы приведения

Ключевые слова в C++