Salut,
le premier constructeur que tu montres est ce qu'on appelle un constructeur par defaut.
Il est utilisé lorsqu'on fait :
1 2
| // Contructeur par defaut de MaClasse appellé
MaClasse a; |
Ce que tu vois après les deux points ':' c'est la liste d'initialisation. C'est ici que sont initialisées pour la premiere fois les membres et les bases (si elle hérite) de notre classe.
Effectivement, faire : m_Annee(0) revient à faire m_Annee = 0; dans le corps du constructeur, mais il est préférable, pour des initialisation triviales, d'utiliser la liste. Je te laisse chercher pourquoi.
Le deuxieme est un constructeur par copie, car il prend en paramètre une référence d'objet du même type que l'objet construit.
1 2 3
| MaClasse a;
// Contructeur par copie de MaClasse appellé
MaClasse b( a ); |
Généralement implémenté lorsqu'on souhaite autoriser la duplication un objet. Parfois, faire une copie d'un objet n'a pas de sens, on interdit alors la copie en déclarant comme privé ce constructeur et en ne l'implémentant pas. Ici chaque membre est initialisé avec les autres membres de l'objet. On voit que m_zone, qui n'était pas initialisé dans le constructeur par defaut (peut-être pas le besoin), l'est ici.
Dans le troisieme, il s'agit d'un constructeur avec paramètres divers (pas de nom particulier enfin je crois pas).
Effectivement, dans n'importe quel constructeur, tu peux appeller n'importe quelle fonction (sauf les fonctions virtuelles de la classe en cours de construction). C'est idem dans le destructeur.
Je te conseille (vivement) d'aller faire un tour vers la FAQ C++ (très bien faite) qui doit déjà répondre à toutes ces questions de bases et bien d'autres.
A+
Partager