Какова цель const_cast <> на энергозависимом?

Я видел, что было возможно сделать это, но я не понимаю интереса.

11
задан Thomas Matthews 13 June 2010 в 02:18
поделиться

3 ответа

Вот Dr. Статья Доббса Андрея Александреску, в которой содержится довольно непристойное количество деталей.

23
ответ дан 27 October 2019 в 01:50
поделиться

const и volatile ортогональны.

const означает, что данные доступны только для чтения.

volatile означает, что переменная может изменяться по внешним причинам, поэтому компилятору необходимо читать переменную из памяти при каждом обращении к ней.

Таким образом, удаление const позволяет вам записать то, что в противном случае было местоположением только для чтения (код должен обладать некоторыми специальными знаниями о том, что местоположение действительно может быть изменено). Вы не должны удалять volatile , чтобы записать его, потому что это может привести к неопределенному поведению (из-за 7.1.5.1/7 - , если будет сделана попытка обратиться к объекту, определенному с типом, квалифицированным volatile. через использование lvalue с энергонезависимым типом поведение программы не определено. )

4
ответ дан 3 December 2019 в 10:43
поделиться

const и volatile звучат так, как будто они относятся к одной и той же идее для переменной, но это не так. Переменная const не может быть изменена текущим кодом. Неустойчивая переменная может быть изменена каким-либо внешним объектом вне текущего кода. Возможно иметь переменную const volatile - особенно что-то вроде отображаемого в память регистра - которая изменяется компьютером в то время, когда ваша программа не может предсказать, но ваш код не может изменяться напрямую. Вы можете использовать const_cast , чтобы добавить или удалить const или volatile («cv-qualification») в переменную.

4
ответ дан 3 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: