2016-05-30 7 views

risposta

6

Poiché lo scopo di un oggetto const è che non può essere modificato. Se un membro const di classe, in questo caso, restituisce un riferimento mutabile a un carattere della stringa, è possibile modificarlo.

Ora, per quanto riguarda operator[], è perché è possibile utilizzare l'operatore & per ottenere un puntatore ad esso. Dopo tutto, qualcosa di simile è abbastanza comune:

auto *foo=&bar[baz]; 

Non sarebbe in grado di farlo con un tipo di ritorno rvalue pianura. Almeno in questo caso è possibile ottenere un puntatore const.

+2

L'OP ha chiesto 'const char e' 'vs char' (non' char & ') (vale a dire, perché non' char' per il sovraccarico const), giusto? –

+0

@JamesAdkison Ti sei perso la dichiarazione del membro 'const'? –

+0

Sì, ho quasi perso questa parte e ho aggiornato la mia risposta. –