PDA

View Full Version : C++ domanda su & * :eek:


Predator Hunter
18-12-2006, 09:32
Ciao a tutti. una domanda banale.

se io ho una classe A che ha un puntatore ad un oggetto tipo

A *a_ptr;

e voglio effettuare una funzione di get che torni il riferimento all'oggetto, che differenza c'è tra

A* getA()

A& getA()

A getA()

??

ditemi se dico male
la prima tornerà una copia della porzione di memoria che contiene l'indirizzo dive sta l'oggetto puntato da a_ptr

la seconda tornerà l'indirizzo della porzione di memoria che contiene l'indirizzo di dove sta l'oggetto puntato da a_ptr

la terza tornerà l'oggetto puntato da a_ptr


La accendiamo?

la get che torna il RIFERIMENTO all'oggetto è la seconda? (questione di terminologia)

Accendiamo anche questa?


ciao a tutti e grazie

andbin
18-12-2006, 09:56
A* getA()

A& getA()

A getA()La prima e la seconda ritornano, parlando in generale, un riferimento all'oggetto, non l'oggetto vero e proprio. Nel primo caso hai un puntatore, quindi se devi ad esempio chiamare un metodo farai ogg->metodo (). Nel secondo caso hai un "reference" (che non è un puntatore) e nel caso di chiamata ad un metodo, farai ogg.metodo ().

Nel terzo caso ottieni una copia dell'oggetto instanziato all'interno della funzione get(). Qui però entrano in gioco i "costruttori di copia".

Predator Hunter
18-12-2006, 10:27
ok dunque la differenza tra seconda e terza sta che facendo

oggritornato.metodo

nella seconda agiscu sul vero oggetto
nella terza su una sua copia


la prima facendo -> ha lo stesso effetto della seconda facendo . sul'oggetto ritornato.

grazie mille