G>>как понимать const volatile и зачем оно такое нужно?

ПК>volatile означает, что объект может изменяться как-то помимо действий программы, const — объект действиями программы через данный идентификатор не изменяется. const volatile — объект изменяется только "внешними" по отношению к программе способами. Например, данные какого-то внешнего устройства, отображенные на оперативную память.


А также, и это наиболее важное применение: что объект может поменяться за пределами "прямой видимости":
— в другом потоке
— в какой-либо функции

Особенно это существенно для указателей и ссылок: могут одновременно существовать несколько разных способов доступиться до одного и того же предмета.

const — накладывает ограничение на модификацию "предмета" через данный идентификатор/ссылку/указатель,
volatile — сообщает компилятору, что нельзя кэшировать значение "предмета", т.к. он может неявно измениться в любой момент.
Автор: Кодт    Оценить