2011-10-27 13 views

Respuesta

10

mutable, como const, es solo una cosa de tiempo de compilación. Solo te permite modificar esa variable en un contexto constante. En el tiempo de ejecución, no hay diferencia si declaraste el contenedor mutable o no.

class Foo{ 
    mutable int i; 

public: 
    void foo() const{ 
    // constant context, but you can modify `i` 
    i = 5; 
    } 
}; 
+2

También se puede utilizar como una sugerencia para el optimizador – Dani

+2

Afecta lo que puede hacer el optimizador. –

+1

Existen (al menos en teoría) algunas oportunidades de optimización que puede hacer con objetos inmutables (en el sentido más amplio), que pueden romper su código si se aplican a objetos 'const' con miembros' mutable'. Sin embargo, no estoy lo suficientemente familiarizado con las implementaciones del compilador para decir en qué medida se implementan. Aún así, la pregunta es válida precisamente por esta razón. – bitmask

Cuestiones relacionadas