2010-10-17 16 views
10

perché o per quale motivo non è possibile dichiarare una variabile membro della classe in C++ come static mutable? Qualcosa di similevariabili membro modificabili statiche in C++?

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

Per me, non c'è ragione per vietare tali dichiarazioni. Per esempio. Per ragioni come il mantenimento di statistiche globali a livello di classe, può essere conveniente avere una variabile statica che può essere modificata dai metodi const (logicamente). Quindi, si tratta di una sorta di misdesign in C++ e inutilmente complicato, oppure esiste una ragione pratica o teorica che non riesco a vedere.

risposta

23

I membri statici non-const della classe possono già essere modificati da qualsiasi metodo (const e non-const) della classe. Non è necessario e inutile dichiararlo con mutable. Ciò non realizzerebbe assolutamente nulla.

1

La parola chiave mutabile consente a una funzione membro "const" e quindi non statico di modificare le variabili membro non statiche contrassegnate come tali (vale a dire, modificabili). Le funzioni statiche non possono essere const e le funzioni membro const possono modificare membri statici non const. So che questo è un po 'confuso, ma è per questo che non è necessario consentire una variabile membro modificabile.

Problemi correlati