=
RIASSUNTO CAPITOLO 8 PROGRAMMAZIONE LIBRO
Puntatori
- 8.1: puntatori
Il C++ fornisce una nuova parola chiave per indicare che un puntatore è nullo, ossia
nullptr. Nelle versioni preceden= al C++03 compresa per indicare che un puntatore
era nullo si usava il valore 0 in quanto esso è un =po fondamentale e quindi non può
essere conver=to in 0 o in nessun altro numero.
Il vantaggio offerto dalla parola chiave nullptr è quello di rendere il codice più chiaro
da leggere e quindi sicuro. Inoltre, a differenza del C, il C++ fornisce tre nuove
=pologie di puntatori “intelligen=” (smart pointer).
- 8.2: auto
Essendo il C++ un linguaggio fortemente =pizzato, per memorizzare il risultato di
un’espressione in una variabile è necessario conoscere il =po dell’espressione, cosa
che può risultare molto verbosa sopraOuOo se si traOa di un’espressione generica.
Nel C++11 si può chiedere al compilatore di inferire il =po che può essere dedoOo
dalla dichiarazione delle espressioni. Ciò può essere faOo usando la parola chiave
auto al posto del =po della variabile che dev’essere obbligatoriamente inizializzata
visto che il compilatore non saprebbe come inferire il =po.
La parola chiave auto ignora la costanza dei =pi, ma non quella dei =pi punta= come
per esempio un puntatore a const; nel caso si desideri la costanza questa dev’essere
chiesta esplicitamente.
L’uso di auto semplifica molto le dichiarazioni di =pi complessi come quelli usato
nell’STL o smart pointer.
Ul=ma cosa che si può dire su auto è che può essere combinato con un nuovo =po di
dichiarazione del valore di ritorno deOo trailing return type e il =po ritornato viene
indicato dopo l’elenco dei parametri usando ->.
- 8.3: decltype
Se si vuole far dedurre al compilatore un =po di una variabile senza che questa venga
inizializzata si può usare lo specificatore decltype. In ques= casi il compilatore
analizza l’espressione e ne inferisce il =po.
Nel caso l’espressione sia una variabile decltype ne man=ene costanza o l’essere un
riferimento a variabile.
Nel caso di espressioni che rendono oggeX, che possono essere a sinistra di
un’assegnazione, decltype farà si che il =po inferito sia un riferimento ad essi.
- 8.4: seman=ca move
Un lvalue è un’espressione che rende una funzione o un oggeOo ed indica
normalmente un’espressione che può stare a sinistra di un’assegnazione anche se
non è sempre vero.
Essendo degli l’value delle locazioni si riferiscono a locazioni di memoria e usando
l’operatore & si oXene l’indirizzo di locazione.
Un rvalue, invece, è un’espressione che rende un valore ma non è associata alla
l
-
Appunti riassuntivi Programmazione (parte 3, design OO e eccezioni)
-
Appunti completi di Programmazione a oggetti e Design patterns
-
Appunti riassuntivi Programmazione (parte 1, linguaggio C++)
-
Appunti riassuntivi Programmazione (parte 6, adapter e observer)