Valeurs par défaut

anarchysniper Messages postés 65 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 29 septembre 2005 - 31 mars 2005 à 13:46
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 1 avril 2005 à 19:32
Quelle est la meilleure manière de définir des valeurs par défaut aux propriétés d'une classe ?



Le ":" du C qui était bien pratique ne fonctionne évidemment pas en C++ ...



Faire initialiser les valeurs par une fonction new pour en changer la moitié ensuite est un sérieux gaspillage de puissance.



D'un autre coté, si, comme je le crains, le ":" du C, du point de vue
code compilé, revenait de toute façon à initialiser les valeurs dans
une fonction new invisible, que faire ?



Prier pour que la fonction d'optimisation du compilateur nous pardonne nos doubles initialisations ?

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
31 mars 2005 à 14:26
Le ":" du C qui était bien pratique ne fonctionne évidemment pas en C++ ...

=> de quoi tu parle et qu'est-ce que tu entends par là ?
0
nicooooo1 Messages postés 58 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 4 février 2012
31 mars 2005 à 16:23
salut,



il suffit de les mettre dans la declaration de la methode
0
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
31 mars 2005 à 17:40
slt,

les ":" dont tu parles, c'est quoi? car la je vois pas du tout ( a par pour faire une etiquete ou avec des switch-case)

et normalement, le c++ est compatible avec le C, donc tou ce qui vient du C fonctionne en C++ (arretz moi si je di une connerie)
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
31 mars 2005 à 19:35
Les ':' du C dont tu parles ne peuvent qu'etre que les champs de bits
dans une structure, et ca n'a rien à voir avec une initialisation.



En C++, le moyen le plus rapide d'initialiser les membres d'une classe
avec des valeurs par défauts est de redéfinir le constructeur par
défaut (sémantiquement le constructeur qui peut etre appelé sans
paramètres).



class Foo

{

int a, b;

public:

Foo() : a(1), b(2) {}

};
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
anarchysniper Messages postés 65 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 29 septembre 2005 1
1 avril 2005 à 11:31
Oui mais est-ce que les doubles initialisations sont supprimées par le préprocesseur ?
Ce serait en effet dommage de faire faire à la machine :
foo Foo ; // ^^
a = 2 ;
Cela reviendrait à faire :
foo Foo ;
Foo.a = 1 ;
Foo.b = 2 ;
Foo.a = 2 ;
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
1 avril 2005 à 19:32
Tu manques de bases dans la programmation objet, quand tu fais

foo Foo ; les objets agregés a b et c sont deja construit puisque Foo est construit.



Cette forme de constructeur


Foo() : a(1), b(2) {}

permet de choisir le constructeur pour les attributs.

Pourquoi tu parles du preprocesseur, il n'a rien à voir dans tout ca !
0
Rejoignez-nous