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


оператор 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++