2011-10-27 16 views

risposta

10

mutable, come const, è solo una cosa in fase di compilazione. Permette solo di modificare quella variabile in un contesto costante. In fase di runtime, non vi è alcuna differenza se dichiarate o meno il contenitore mutable.

class Foo{ 
    mutable int i; 

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

Può anche essere usato come suggerimento per l'ottimizzatore – Dani

+2

Influisce su ciò che l'ottimizzatore può fare. –

+1

Ci sono (almeno in teoria) alcune opportunità di ottimizzazione che si possono fare su oggetti immutabili (nel senso più ampio), che potrebbero infrangere il codice se applicati a oggetti 'const' con membri' mutabili'. Tuttavia, non sono abbastanza familiare con le implementazioni del compilatore per dire fino a che punto sono implementate. Tuttavia, la domanda è valida proprio per questa ragione. – bitmask

Problemi correlati