qualifier c++ volatile

c++ cv qualifier



¿Cuál es el propósito de una función de miembro volátil en C++? (2)

¿Cuál es el propósito de una función de miembro volatile en C ++?


EDITAR:

Esta respuesta se publicó cuando la pregunta era sobre la palabra clave volátil. La pregunta parece haber sido cambiada por un tercero.

ORIGINAL:

Volatile informa al compilador que no debe asumir que el valor que acaba de poner en la variable marcada como volatile estará allí la próxima vez que lo use ... que debe verificar el valor actual antes de volver a usarlo.

Un ejemplo es si la variable representa una ubicación de memoria que podría ser cambiada por otro proceso.

Aquí hay un ejemplo (hace siglos desde que hice C ++, así que perdona cualquier problema de sintaxis menor):

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 }


Para responder a la pregunta acerca de lo que significa tener una ''función de miembro volátil'' (que puede o no ser lo que originalmente pretendía la persona que publicó la pregunta), marcar una función de miembro como const o volatile (o una combinación de const volatile ) aplica esos calificadores al puntero utilizado en la función. Como lo indica la norma (9.2.1 "El puntero de this "):

El tipo de esto en una función miembro de una class X es X* . Si la función miembro se declara const , el tipo de esto es const X* , si la función miembro se declara volatile , el tipo de this es volatile X* , y si la función miembro se declara const volatile , el tipo de esto es const volatile X* .

Por lo tanto, al marcar la función miembro como volatile estaría haciendo que cualquier acceso a los miembros de datos no estáticos del objeto dentro de esa función miembro sea volatile .