Merci beaucoup pour vos réponse, elle sont très claires.
Comme je suis dans le cas de classes qui n'ont qu'un seul constructeur par defaut, je n'ai pas de probleme pour choisir le constructeur que je veux utiliser, et donc pas à me soucier des listes d'initialisation.
En tout cas je saurais que c'est faisable aussi.
Tiens, tant que j'y suis je vais vous poser deux autres chtites questions indépendantes :
/* question 1 */
conceptuellement, il vaut mieux mettre des pointeurs dans des objets pour les imbriquer, ou mettre directement une instance dans un objet ?
En clair, faut-il privilégier une deux deux constructions :
class A
{
B b;
A();
~A();
};
ou plutot :
class A
{
B* b;
A(){b = new B};
~A();
};
J'imagine que ca dépend des objets manipulés et de la signification qu'on veut leur donner.
Mois je suis dans le cas d'une grosse classe EngineSysteme qui va manager pas mal de grosses classe : AffichageSysteme, InputSysteme, ...
Je ne sais pas trop laquelle des deux constructions utiliser, sachant qu'en fait ma classe EngineSysteme ne fera presque rien toute seule, elle se contentera de faire le "jonction" entre des gros modules.
Je ne sais donc pas trop si il vaudrait mieux faire :
class EngineSysteme
{
AffichageSysteme affichage;
InputSysteme input;
...
};
ou class EngineSysteme
{
AffichageSysteme* affichage;
InputSysteme* input;
};
qu'est-ce que qui conceptuellement est le mieux ?
Il faut savoir que je n'aurais qu'une seule instance de Engine Systeme, et donc une seule instance de AffichageSysteme et InputSysteme, donc ces classes représentent des objets qui seront unique.
Raaaah, il faudrait vraimment que je me décide à lire un bouquin sur la conception orienté objet pour m'aider à mieux penser ce genre de choses là.
/* question 2 */
C'est encore un probleme de conception.
Quand je veux passer à une fonction un objet, j'ai plusieurs possibilités :
fontion(OBJET objet); // VERSION 1
Bon, là il va recevoir l'objet par recopie, donc pas de modif possible sur l'objet original.
fonction(OBJET& objet) // VERSION 2
La il le recoit par référence (que je vois comme un pointeur déguisé), et les eventuelles modifs que je vais faire sur objet affecterons sa version d'origine.
fonction(OBJET* objet) // VERSION 3
La je recois un pointeur, donc c'est leger.
mais avec mon pointeur je vais pouvoir modifier objet.
Ou juste utiliser objet.
fonction(const OBJET& objet) // VERSION 4
La je vais recevoir l'objet par référence, mais je serais certain qu'il ne sera pas modifié par ma fonction.
Idéallement, quand-est-ce que je devrais utiliser chacune des version ci dessus ?
Bon, deja ca dépend de si je veux pouroir faire des modifs sur mon paramètre.
Y'a-t'il d'autres paramètres à prendre en compte pour décider ?
En terme de rapidité, quels sont les perfs relatives ? Bon la version 1 est la plus lente, ca c'est sur puisque il faut recopier toute mon instance.
Mais entre les autres, ca donne quoi ?
Conclusion entre mes deux questions :
vous l'aurez compris, j'ai du mal à utiliser à bon escient un objet, un pointeur sur l'objet, des passages par reference, par reference constante, et par pointeur.
Si vous pouvez me donner quelques conseils...
ps : Désolé pour mon post over long.
Et désolé pour avoir poster ca dans ce forum, "programmation" aurait été plus adapté mais je me suis gouré hier soir, et c'est l'habitude da passer ici. Mes excuses à Lapintade.