Tengo una pregunta acerca de la diferencia entre volátil y mutable. Noté que los dos significa que podría ser cambiado. ¿Qué más? ¿Son la misma cosa? ¿Cual es la diferencia? ¿Dónde son aplicables? ¿Por qué se proponen las dos ideas? ¿Cómo usarlos de manera diferente?volátil vs mutable en C++
Muchas gracias.
objetos 'volátiles' también pueden ser cambiados por procesos que no involucran a la CPU en absoluto. Por ejemplo, un registro de bytes recibidos en un periférico de comunicaciones puede incrementarse en la recepción de un byte (y esto puede incluso disparar una interrupción). Otro ejemplo es un registro de indicadores de interrupción pendiente en un periférico. –
Además, 'volátil' no solo significa que el objeto puede cambiar fuera del conocimiento del compilador; también significa que las escrituras en el objeto no pueden ser eliminadas por el compilador incluso si esas escrituras parecen ser inútiles. Por ejemplo: 'x = 1; x = 0; 'si' x' es volátil, el compilador debe emitir ambas operaciones de escritura (que pueden ser significativas a nivel de hardware). Sin embargo, para un objeto no volátil, el compilador podría elegir no molestarse en escribir el '1' ya que nunca se usa. –
¡Un objeto se puede marcar tanto 'const' como' volátil'! No puede cambiar el objeto, pero se puede cambiar detrás de su espalda. – CTMacUser