Какова цель a volatile
функция членства в C++?
Чтобы ответить на вопрос о том, что значит иметь «изменчивую функцию-член» (которая может быть, а может и не совпадать с первоначальным намерением автора, отправившего вопрос), помечая функцию-член как const
или volatile
(или комбинированную const volatile
), эти квалификаторы применяются к указателю this
используется в функции. Как указано в стандарте (9.2.1 «Указатель this
»):
Тип this в функции-члене класса
X
-X *
. Если функция-член объявлена const
, типом this являетсяconst X *
, если функция-член объявлена volatile
, типомthis
- этоvolatile X *
, и если функция-член объявлена const volatile
, типом этого будетconst volatile X *
.
Таким образом, пометив функцию-член как volatile
, вы сделаете любой доступ к нестатическим элементам данных объекта внутри этой функции-члена как volatile
.
EDIT:
Этот ответ был опубликован, когда вопрос был о ключевом слове volatile. Похоже, что вопрос был изменен третьей стороной.
ОРИГИНАЛ:
Volatile сообщает компилятору, что он не должен предполагать, что значение, которое он только что поместил в переменную, помеченную как volatile, будет там в следующий раз, когда он будет ее использовать... что он должен проверить текущее значение, прежде чем использовать его снова.
Один из примеров - если переменная представляет собой участок памяти, который может быть изменен другим процессом.
Вот пример (давненько я не занимался C++, так что простите за небольшие синтаксические ошибки):
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
}