2015-05-09 4 views
7

Nella pagina 108 in C++ Primer Quinta edizione per Lippman et al, si dice:const_iterator e puntatore const

A const_iterator si comporta come un puntatore const (§ 2.4.2, pag 62.). Come un puntatore const, un const_iterator può leggere ma non scrivere l'elemento che denota; [...]

Capisco la funzione di const_iterator, ma questo confronto è corretto? Penso che il suo comportamento sia più simile a "puntatore a const".

Ho frainteso qualcosa?

+0

credo l'autore si riferiva a un puntatore a const. È più semplice pronunciare puntatore const e la maggior parte delle volte, puntatore a const è la scelta facile per risolvere l'ambiguità in "puntatore const". Potresti obiettare che è spiacevole che l'ambiguità sia lì in primo luogo. – chris

risposta

1

Quando l'autore ha detto "puntatore const" Penso che in realtà intendesse "puntatore a const".

La ragione per cui probabilmente lo fa è duplice:

  1. abbiamo quasi mai usare un puntatore costante (almeno non direttamente - i modelli non contano).

  2. Un puntatore a const è scritto come const T*, che si pronuncia come "puntatore const".

3

Hai ragione. Gli autori fanno esplicito riferimento alla sezione 2.4.2 del loro libro (ho appena aggiornato la tua domanda per riflettere questo), dove definiscono come intendono usare la terminologia "const pointer" vs. "pointer to const". Data questa definizione precisa, avrebbero dovuto dire "pointer to const" nella sezione da cui hai citato.

(Tuttavia, altri autori in altri contesti usare la terminologia meno preciso, e di fuori di questo contesto, non avrei trovato insolito se qualcuno di cui "puntatore a const" come "puntatore const".)