Какова цель энергозависимой функции членства в C++?

Какова цель a volatile функция членства в C++?

21
задан AshleysBrain 15 March 2010 в 10:26
поделиться

2 ответа

Чтобы ответить на вопрос о том, что значит иметь «изменчивую функцию-член» (которая может быть, а может и не совпадать с первоначальным намерением автора, отправившего вопрос), помечая функцию-член как 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 .

23
ответ дан 29 November 2019 в 21:28
поделиться

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
}
6
ответ дан 29 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

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