Bonjour,
Boite et caillou sont deux classes.
On a la classe Boite :
Et on a la classe Caillou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class Boite { private : int taille; int nbMax; Caillou c; public : Boite(void) { cout << "Constructeur par defaut de Boite" << endl; setTaille(20); setNbMax(5); setCaillou(c); } Boite(int t, int nb, const Caillou& c) { cout << "Constructeur par initialisation de Boite" << endl; setTaille(t); setNbMax(nb); setCaillou(c); } ~Boite() { cout << "Destructeur de Boite" << endl; } // setters et getters classique dont 3 sont cités plus haut }
Dans mon programme principal(main), j'effectue ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 class Caillou { private : string couleur; public : Caillou(void) { cout << "Constructeur par defaut de Caillou" << endl; setCouleur("jaune"); } Caillou(string c) { cout << "Constructeur par initialisation de Caillou" << endl; setCouleur(c); } ~Caillou() { cout << "Destructeur de Caillou" << endl; } // setters et getters classique dont 1 est cité plus haut }
Tout marche à merveille.. Sauf que je me rend compte en traçant le programme qu'il invoque les constructeurs dans cet ordre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Boite b(0, 0, Caillou("bleu"));
Or, je m'attendais à ce que les constructeurs appelés soient :Constructeur par initialisation de l'objet Caillou
Constructeur par defaut de l'objet Caillou
Constructeur par initilisation de l'objet Boite
Destructeur de l'objet Caillou
Du coup, je ne comprend pas..Constructeur par initilisation de l'objet Caillou
Constructeur par initilisation de l'objet Boite
Auriez-vous une idée du soucis(si il y en a un) ?
Merci.
ps : Mon programme ne se limite pas à 2 classes. Il s'agit ici d'un extrait complet(tout ce qui est en rapport aux 2 classes y est).
Edit :
Je rajoute des infos :
Quand je fais du pas à pas avec le debugger :
1] je passe bien par le constructeur d'initialisation de Caillou.
2] A la fin du constructeur d'initialisation de Caillou, je passe sur la déclaration du constructeur d'initialisation de Boite.
3] En faisant un step into, je ne me retrouve pas dans le constructeur d'initialisation de Boite mais dans le constructeur par défaut de Caillou.
4] Dans ce constructeur, il n'y a que des erreurs. Quand j'essaie d'accèder à la mémoire de l'objet et quand je passe sur le setCouleur.
5] A la fin de ce constructeur, je repasse sur le constructeur d'initialisation de Boite. A la ligne se trouvant après la déclaration du constructeur.
6] A la fin du constructeur d'initialisation de Boite, je passe au destructeur de Caillou et là erreur.
> Il est à noter que lors du débogage, il y a des erreurs mais lancer normalement, il n'y a aucune erreur.
Partager