cs_Zekez
Messages postés27Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention26 septembre 2006
-
23 mai 2005 à 15:19
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 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!
cs_Zekez
Messages postés27Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention26 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)?
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 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.