Какова цель функции-члена volatile
в С++?
Какова цель изменчивой функции-члена в С++?
Ответ 1
Чтобы ответить на вопрос о том, что значит иметь "изменчивую функцию-член" (которая может быть или не быть тем, что первоначально предназначалось человеком, разместившим вопрос), отмечая функцию-член как const
или volatile
(или комбинированный const volatile
) применяет эти квалификаторы к указателю this
, используемому в этой функции. Как указано стандартом (9.2.1 "Указатель this
" ):
Тип этого в членной функции от
class X
равенX*
. Если объявлена функция-членconst
, типconst X*
, если объявлена функция-членvolatile
, типthis
равенvolatile X*
, а если объявлена функция-членconst volatile
, тип этогоconst volatile X*
.
Итак, пометив функцию-член как volatile
, вы сделаете любой доступ к нестатическим элементам данных объекта внутри этой функции-члена как volatile
.
Ответ 2
EDIT:
Этот ответ был опубликован, когда вопрос касался ключевого слова volatile. Вопрос, похоже, был изменен третьей стороной.
ОРИГИНАЛ:
Volatile информирует компилятор о том, что он не должен предполагать, что значение, которое он только что помещает в переменную, помеченную как volatile, будет в следующий раз, когда она ее использует..., чтобы она снова проверила текущее значение, прежде чем использовать его снова.
Один пример: если переменная представляет собой ячейку памяти, которая может быть изменена другим процессом.
Вот пример (был веком с тех пор, как я сделал С++, поэтому, пожалуйста, простите любые незначительные проблемы синтаксиса):
volatile int x;
int DoSomething()
{
x = 1;
DoSomeOtherStuff();
return x+1; // Don't just return 2 because we stored a 1 in x.
// Check to get its current value
}