Bonjour,

Boite et caillou sont deux classes.
On a la classe Boite :
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
}
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
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
}
Dans mon programme principal(main), j'effectue ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Boite b(0, 0, Caillou("bleu"));
Tout marche à merveille.. Sauf que je me rend compte en traçant le programme qu'il invoque les constructeurs dans cet ordre :
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
Or, je m'attendais à ce que les constructeurs appelés soient :
Constructeur par initilisation de l'objet Caillou
Constructeur par initilisation de l'objet Boite
Du coup, je ne comprend pas..
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.