Подтвердить что ты не робот

Какова цель изменчивой функции-члена в С++?

Какова цель функции-члена volatile в С++?

4b9b3361

Ответ 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
}