L'operatore Member-of-Pointer (Freccia)
L’operatore member-of-pointer, comunemente chiamato operatore freccia (->), esegue due operazioni contemporaneamente:
- Dereferenzia un puntatore.
- Accede a un membro dell’oggetto puntato.
Questo operatore è molto utile per ridurre la frizione notazionale (cioè la difficoltà o fastidio di scrivere sintassi complessa) quando gestisci puntatori a strutture o classi.
Molto spesso, quando passi oggetti pesanti (come grandi classi) a una funzione, lo farai tramite puntatore (o reference) per evitare copie costose. Se quella funzione ha bisogno di accedere ai metodi o ai membri pubblici dell’oggetto, userai l’operatore freccia.
Vediamo un esempio usando una nostra struttura fittizia ClockOfTheLongNow:
L’utilizzo di clock_ptr->set_year(2020) è un comodo e leggibile rimpiazzo per la sintassi alternativa.
Potresti infatti ottenere lo stesso risultato combinando l’operatore di dereferenziazione (*) e l’operatore membro (.) usando le parentesi per forzare la precedenza degli operatori:
(*clock_ptr).set_year(2020);Tuttavia, come puoi intuire, questa sintassi è più goffa e prolissa. L’operatore freccia è universalmente preferito per la sua eleganza.