2010-10-17 19 views
10

¿por qué o por qué motivo no es posible declarar una variable de miembro de clase en C++ como static mutable? Algo comovariables de miembros mutables estáticas en C++?

static mutable int t; //This won't compile 

Para mí, no hay ninguna razón para prohibir tales declaraciones. P.ej. por razones como mantener una estadística global para toda la clase, puede ser conveniente tener una variable estática que pueda ser alterada por métodos const (lógicamente). Entonces, o bien este es un tipo de diseño erróneo en C++ e innecesariamente complicado, o hay una razón práctica o teórica que no puedo ver.

Respuesta

23

Los miembros estáticos no const de la clase pueden ya modificarse por cualquiera de los métodos (const y no const) de la clase. No hay necesidad ni sentido al declararlo con mutable. Eso no lograría absolutamente nada.

1

La palabra clave mutable permite que una función "const" y, por lo tanto, miembro no estático cambie las variables de miembro no estáticas marcadas como tales (es decir, mutable). Las funciones estáticas no pueden ser const y las funciones miembro de const pueden cambiar los miembros estáticos no const. Sé que esto es algo confuso, pero es por esto que no hay necesidad de permitir una variable de miembro estático mutable.

Cuestiones relacionadas