[CPP] precision sur les pointeurs et reference

precision sur les pointeurs et reference [CPP] - C++ - Programmation

Marsh Posté le 30-12-2005 à 17:02:21    

bonjour messieurs,  :hello:  
 
je crois que je m'enbrouille un peu avec les references
 
un exemple:
j'ai une  classe T , evec son constructeur de recopie,
 
j'ai des pointeurs sur T, t1 et t2;
 
t1= new T("bonjour", 2 );   //par exemple
et je voudrais t2 qui pointe sur une autre classe T, identique a t1
est-ca que t2 = new T(*t1);  est une bonne facon de faire ? il y a creation d'un objet temporaire non ?
 
les constructeurs de recopie , ainsi que en general les surcharge d'operateurs d'affectation , prennent en parametres des references.
mais si moi , je travaille avec des pointeurs( creation d'objet au fur et a mesure, qui doivent créer d'autres objets... ): les  references perdent de leur interet ?  
 
en esperant ne avoir été trop ridicule.
merci.

Message cité 1 fois
Message édité par notornis le 30-12-2005 à 17:04:12
Reply

Marsh Posté le 30-12-2005 à 17:02:21   

Reply

Marsh Posté le 04-01-2006 à 00:10:32    

notornis a écrit :

un exemple:
j'ai une  classe T , evec son constructeur de recopie,
 
j'ai des pointeurs sur T, t1 et t2;
 
t1= new T("bonjour", 2 );   //par exemple
et je voudrais t2 qui pointe sur une autre classe T, identique a t1
est-ca que t2 = new T(*t1);  est une bonne facon de faire ?


Oui.

notornis a écrit :

il y a creation d'un objet temporaire non ?


Non, new renvoie un pointeur sur un objet (alloué dans le free store), construit via copie-construction. Il n'y a donc que le constructeur de copie qui est appelé.

notornis a écrit :

les constructeurs de recopie , ainsi que en general les surcharge d'operateurs d'affectation , prennent en parametres des references.
mais si moi , je travaille avec des pointeurs( creation d'objet au fur et a mesure, qui doivent créer d'autres objets... ): les  references perdent de leur interet ?


Non, pourquoi ?
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed