Поделиться через


Оператор const_cast

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

Синтаксис

const_cast <type-id> (expression)

Замечания

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

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

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

Пример

// 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 . Приведение выполняется только для оставшейся части оператора, в котором оно указано.

См. также

Операторы приведения
Ключевые слова