Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4898 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Assignation et constructeur de copie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Assignation et constructeur de copie

n°511295
peak
Posté le 09-09-2003 à 22:20:27  profilanswer
 

Bonjour,  
J'aimerai avoir votre avis sur ceci:
 
Dans cette exemple, est-il possible d'éviter que l'assignation "E(T)" n'appel le constructeur de copie sans que E ne soit un pointeur?

Code :
  1. template<class Type>
  2. class Item {
  3. public:
  4.  Type E;
  5.  Item<Elem>* down;
  6.  Item<Elem>* up;
  7.  Item (Type &T, Item<Elem>* tdown=NULL, Item<Elem>* tup=NULL): E(T)/**/, down(tdown), up(tup) {}
  8. };


mood
Publicité
Posté le 09-09-2003 à 22:20:27  profilanswer
 

n°511297
Taz
bisounours-codeur
Posté le 09-09-2003 à 22:21:35  profilanswer
 

rien comrpis

n°511328
schnapsman​n
Zaford Beeblefect
Posté le 09-09-2003 à 22:48:58  profilanswer
 

non, si Type::Type(const Type& ) est défini, il sera appelé pour construire E; sinon ce sera une recopie champ à champ.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°511430
peak
Posté le 10-09-2003 à 02:53:12  profilanswer
 

En fait ce que je voudrai c'est :

Code :
  1. template<class Type>
  2. class Item {
  3. public:
  4. Type *E; 
  5. Item<Elem>* down; 
  6. Item<Elem>* up;
  7. Item (Type *T, Item<Elem>* tdown=NULL, Item<Elem>* tup=NULL): E(T)/**/, down(tdown), up(tup) {}
  8. };


 
E(T) n'appel pas le constructeur de copie étant donné que E(T) ne correspond qu'à une assignation d'adresse.
Ma question est de savoir si il existe une autre solution sans utiliser de pointeur?
Par exemple:

Code :
  1. template<class Type>
  2. class Item {
  3. public:
  4. Type &E;
  5. ....


Je n'ai jamais vu d'exemple utilisant une référence de cette manière, c'est pour ça que cela me perturbe.  
Et comme mon programme bug quand je modifie E par &E, je me demande si ça vaut la peinne de debuger ou si c'est le style d'usage à proscrire et si dans ce cas, il y'a mieux à faire??

n°511457
LetoII
Le dormeur doit se réveiller
Posté le 10-09-2003 à 08:56:54  profilanswer
 

:heink:  
 
Je vois pas ce que tu veux faire là. Tu peux tout à fait metre une référence et l'initialiser par E(val). Si non, si t'as un objet t'as forcément appel du constructeur de recopie vu que c comme ça que ça fonctionne dans le langage  [:spamafote]


Message édité par LetoII le 10-09-2003 à 08:57:14

---------------
Le Tyran
n°511459
Taz
bisounours-codeur
Posté le 10-09-2003 à 09:04:25  profilanswer
 

E(new Type(*T))  :??:

n°511464
LetoII
Le dormeur doit se réveiller
Posté le 10-09-2003 à 09:08:36  profilanswer
 

Taz a écrit :

E(new Type(*T))  :??:  


 
 :heink: Et double appel du constructeur de recopie c ça?  :whistle:


---------------
Le Tyran
n°511468
Taz
bisounours-codeur
Posté le 10-09-2003 à 09:13:05  profilanswer
 

ben non
 
 
Type(*T) -> recopie de *T
new Type(*T) -> recopie de *T avec allocation dynamqiue
E(new Type(*T)) -> initialisation
 
 
 
tu vas nous faire de plaisir de changer tes noms de types et de varaibles, par ce que par convention seuls les types ont des identificateur avec masjucule et les noms très courts en majuscule sont réservés aux paramètres templates

n°511476
LetoII
Le dormeur doit se réveiller
Posté le 10-09-2003 à 09:24:06  profilanswer
 

Taz a écrit :

ben non
 
 
Type(*T) -> recopie de *T
new Type(*T) -> recopie de *T avec allocation dynamqiue
E(new Type(*T)) -> initialisation
 
 
 
tu vas nous faire de plaisir de changer tes noms de types et de varaibles, par ce que par convention seuls les types ont des identificateur avec masjucule et les noms très courts en majuscule sont réservés aux paramètres templates


 
Ha oui merde, je suis pas encore bien réveiller moi  [:ddr555]


---------------
Le Tyran
n°511617
peak
Posté le 10-09-2003 à 12:10:40  profilanswer
 

Merci à tous,  
j'ai trouvé une solution,  
je ne sais plus vraiment pourquoi hier cela me semblait suspect mais avec une réference ça marche très bien (je me retrouve avec quelques bugs en échange mais en tout cas le constructeur de recopie n'est plus appelé :)

Code :
  1. [cpp]template<class Type> 
  2. class Item { 
  3. public
  4. Type &E; 
  5. Item<Elem>* down; 
  6. Item<Elem>* up; 
  7. Item (Type &T, Item<Elem>* tdown=NULL, Item<Elem>* tup=NULL): E(T)/**/, down(tdown), up(tup) {} 
  8. };

 
 
Désolé pour la perte de temps occasionné par cette bête question, mais hier cela me semblai un peu moins trivial  :sweat:  
 
merci aussi à Taz pour ces conseils sur les noms de variables, je ne me suis encore jamais vraiment intéresser au normes dans ce domaine, ce que je vais m'empresser de faire!
 :bounce:  

mood
Publicité
Posté le 10-09-2003 à 12:10:40  profilanswer
 

n°511641
rollershad​ow
PSN : RollershadoW
Posté le 10-09-2003 à 12:51:17  profilanswer
 

Peak a écrit :

Merci à tous,  
j'ai trouvé une solution,  
je ne sais plus vraiment pourquoi hier cela me semblait suspect mais avec une réference ça marche très bien (je me retrouve avec quelques bugs en échange mais en tout cas le constructeur de recopie n'est plus appelé :)

Code :
  1. [cpp]template<class Type> 
  2. class Item { 
  3. public
  4. Type &E; 
  5. Item<Elem>* down; 
  6. Item<Elem>* up; 
  7. Item (Type &T, Item<Elem>* tdown=NULL, Item<Elem>* tup=NULL): E(T)/**/, down(tdown), up(tup) {} 
  8. };

 
 
Désolé pour la perte de temps occasionné par cette bête question, mais hier cela me semblai un peu moins trivial  :sweat:  
 
merci aussi à Taz pour ces conseils sur les noms de variables, je ne me suis encore jamais vraiment intéresser au normes dans ce domaine, ce que je vais m'empresser de faire!
 :bounce:  
 


 
 
oue je suis d accord


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Assignation et constructeur de copie

 

Sujets relatifs
copie de bases MySQLCopie de buffer dans formulaire de saisie de msg
[python]classe + liste dans constructeur ??Copie de fichier (au sens cp Unix)
[c++] syntax constructeurautomatiser une copie de répertoire ..sur un reseau
Constructeur de copie[mysql] copie de colonne dans une autre
[DOMINO] Créer une copie de la vue Discussion Threads 
Plus de sujets relatifs à : Assignation et constructeur de copie


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)