Juste expliquer...?

cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006 - 23 mai 2005 à 15:19
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 23 mai 2005 à 23:16
Bonjour,

Voici une structure que j'ai dans une application mais que je ne comprend pas trop:


template<class type> struct noeud
{
type valeur;
noeud<type>* suiv;
noeud(type n, noeud<type>* s): valeur(n), suiv(s){};
noeud(): valeur(), suiv(NULL){};
};

... surtout la ligne:
noeud(type n, noeud<type>* s): valeur(n), suiv(s){};

Si qq'un pouvait m'expliquer ce que font les params valeur(n) et suiv(s), ce serait gentil, merci!

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
23 mai 2005 à 17:03
Hello,



En fait, ce sont des initialisations des membres de la structure faites dans le constructeur:



noeud(type n, noeud<type> * s) // entête du constructeur

: valeur(n), suiv(s) // les membres valeur et suiv prennent respectivement les valeurs n et s

{};
// corps du constructeur


Voilà, rien de bien compliqué en somme...


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
23 mai 2005 à 22:32
D'accord! Seulement, ce sont des initialisations normales (genre: x= 3;)ou ce sont des appels de constructeur des classes représentées par valeur (pour n) ou suiv (pour s)?
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
23 mai 2005 à 23:16
Une initialisation est un appel de constructeur.



La différence:



noeud(type n, noeud<type>* s): valeur(n), suiv(s){}; // construction des membres



noeud(type n, noeud<type>* s)

{

valeur = n;

suiv = s; // assignation

}



Ce qu'il faut comprendre au niveau de la syntaxe c'est que avant '{' du
constructeur, les membres ne sont pas construis. Dans le premier cas on
choisi le constructeur, dans le second cas le constructeur par défaut
des membres à déjà été appelé avant l'assignation d'ou création objet
temporaire et copie inutile.
0
Rejoignez-nous