Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2576 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] syntax constructeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] syntax constructeur

n°438249
Deaddy
Posté le 24-06-2003 à 16:51:24  profilanswer
 

voila c une question de kazi noob :
 

Code :
  1. class truc {
  2. public:
  3.    truc (int v) : val (v) {}
  4. private:
  5.    int val;
  6. };


 
je comprends pas du tout le val(v)
ca ressemble à un appel de fonction; ca fait val=v;  
 
qq pourrait-il m'expliquer ce que c'est ? jusqu'à quel point on peut utiliser ce genre de syntax ?
 
(c surement tout bete, mais je vois pas)
 

mood
Publicité
Posté le 24-06-2003 à 16:51:24  profilanswer
 

n°438258
LetoII
Le dormeur doit se réveiller
Posté le 24-06-2003 à 16:59:46  profilanswer
 

Ben en fait ça s'apparente à un appel du contructeur pour initialiser ton membre. Donc les objets initialiser comme ça doivent avoir un constructeur de recopie pour que ça marche. Pour les types atomique ça marche comme une affectation.
 
Attention si tu utilise cette méthode tu dois initialiser les membres dans l'ordre de leur déclaration.


---------------
Le Tyran
n°438262
gatorette
Posté le 24-06-2003 à 17:05:32  profilanswer
 

C'est tout simple, ça appelle le constructeur de val prenant comme paramètre v.
 
Un petit exemple:

Code :
  1. class Foo
  2. {
  3. public:
  4. Foo() : val_(0) {}
  5. Foo( const Foo& foo ) : val_( foo.val_ ) {}
  6. Foo& operator=( const Foo& foo ) { val_ = foo.val_; return *this; }
  7. protected:
  8. int val_;
  9. };
  10. class Bar
  11. {
  12. Bar( Foo& foo ) : f_(foo) {}
  13. protected:
  14. Foo f_;
  15. };
  16. class Gee
  17. {
  18. Gee( Foo& foo ) { f _= foo; }
  19. protected:
  20. Foo f_;
  21. };
  22. int main( int argc, char *argv[] )
  23. {
  24. Foo f;
  25. Bar b(f); // appelle Foo::Foo(f)
  26. Gee g(f); // appelle Foo::Foo() puis Foo::operator=(f)
  27. return 0;
  28. }


---------------
each day I don't die is cheating
n°438287
Deaddy
Posté le 24-06-2003 à 17:27:54  profilanswer
 

effectivement:

Code :
  1. int main()
  2. {
  3. int i(27);
  4. return i;
  5. }


 
marche très bien
désolé, c paske g l'habitude du c ... les types de bases sont donc de "vrais" objets
 
merci, pour vos réponses

n°438298
nraynaud
lol
Posté le 24-06-2003 à 17:35:19  profilanswer
 

Deaddy a écrit :


qq pourrait-il m'expliquer ce que c'est ? jusqu'à quel point on peut utiliser ce genre de syntax ?


Il y a déjà eu une baston (enfin, je me suis énervé trop vite sur quelqu'un qui savait pas) là dessus :
http://forum.hardware.fr/forum2.ph [...] t=#t272543
 
une initialisation (constructeur():val(intiVal)) c'est lorsque la valeur n'a jamais été affectée, la notion d'ancienne valeur dans la variable n'a pas de sens.
 
Une affectation, qui est plus exactement une affectation (val = newVal) c'est lorsque on écrase l'ancienne valeur pour y mettre une nouvelle, il existe donc des surchages de l'opérateur = (égal) qui vont toucher l'ancienne valeur, par exemple pour la prévenir qu'elle a été virée de la variable. Il est donc hors de question d'avoir un = vers une variable membre dans un constructeur (sauf de la cas rare ou tu sautes d'un constructeur à l'autre et que tu écrase la valeur qu'a mise un precédent constructeur).

n°438650
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 08:43:41  profilanswer
 

Deaddy a écrit :

effectivement:
désolé, c paske g l'habitude du c ... les types de bases sont donc de "vrais" objets


 :non: Les type atomique ne sont pas des objets, quand tu fais:

Code :
  1. int i(3);


 
C la même chose que:
 

Code :
  1. int i = 3;


---------------
Le Tyran

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] syntax constructeur

 

Sujets relatifs
Constructeur de copieC++ constructeur et heritage ...
Passage d'arguments par défaut dans constructeurproblème de constructeur class & cie
philosophie constructeur par recopie / cloneconstructeur de copie de base
constructeur d'une classe dérivée[php] surcharger un constructeur
[LISP] Coloration syntax sous MS Visual C++[résolu][poo/c++] héritage, constructeur et destructeurs
Plus de sujets relatifs à : [c++] syntax constructeur


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)