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

  FORUM HardWare.fr
  Programmation
  C++

  constructeur et liste d'initialisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

constructeur et liste d'initialisation

n°2057230
in_your_ph​ion
Posté le 16-02-2011 à 10:13:59  profilanswer
 

bonjour,
 
Est ce plus rapide de faire :
 

Code :
  1. class A
  2. {
  3.   public:
  4. A() : a(1) {}
  5. int a;
  6. };


 
vs  
 

Code :
  1. class A
  2. {
  3.   public:
  4. A() { a = 1 ;}
  5. int a;
  6. };


 
 
merci par avance

mood
Publicité
Posté le 16-02-2011 à 10:13:59  profilanswer
 

n°2057241
theshockwa​ve
I work at a firm named Koslow
Posté le 16-02-2011 à 10:34:19  profilanswer
 

Pour un type primitif, ca ne changera pas grand chose en release, vu qu'ils ne seront pas initialisés par défaut. Reste que c'est toujours mieux, quand on a le choix de passer par une initialisation.
 
si a avait été une instance d'une classe, dans ta solution 1, tu passerais juste par le constructeur qui t'intéresse, alors que dans la solution 2, tu passerais par le constructeur par défaut puis par l'opérateur de copie.


---------------
last.fm
n°2057485
in_your_ph​ion
Posté le 17-02-2011 à 11:43:27  profilanswer
 

hello theshockwave
 
merci pour ta réponse, tu veux dire que pour la solution 1 :
 

Code :
  1. A a;


 
invoque juste le constructeur, alors que pour 2 on invoque constructeur et opérateur de copie ..??

n°2057494
Un Program​meur
Posté le 17-02-2011 à 12:02:48  profilanswer
 

Pour les types definis par l'utilisateur, oui.  Pour int, c'est simplement non initialise dans le cas 2.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2057498
theshockwa​ve
I work at a firm named Koslow
Posté le 17-02-2011 à 12:08:14  profilanswer
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. struct A
  4. {
  5.     A() : i( 0 )                  { cout << "A::A()" << endl; };
  6.     A( const A& a ) : i( a.i )    { cout << "A::A(A)" << endl; };
  7.     A( int i ) : i( i )           { cout << "A::A(int)" << endl; };
  8.     const A& operator = ( int i ) { this->i = i; cout << "A::operator=(int)" << endl; };
  9.     ~A()                          { cout << "A::~A()" << endl; };
  10.     int i;
  11. };
  12. struct B
  13. {
  14.     B( int i ) { a = i; };
  15.     A a;
  16. };
  17. struct C
  18. {
  19.     C( int i ) : a( i ) {};
  20.     A a;
  21. };
  22. int main()
  23. {
  24.     cout << "B :" << endl;
  25.     B b( 1 );
  26.     cout << "C :" << endl;
  27.     C c( 2 );
  28.     cout << "Destruction :" << endl;
  29.     return 0;
  30. }


 

Code :
  1. $ g++ plop.cpp -o plop.exe && ./plop.exe
  2. B :
  3. A::A()
  4. A::operator=(int)
  5. C :
  6. A::A(int)
  7. Destruction :
  8. A::~A()
  9. A::~A()


 
Edit : mise en forme


Message édité par theshockwave le 17-02-2011 à 12:10:44

---------------
last.fm

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

  constructeur et liste d'initialisation

 

Sujets relatifs
Recherche d'une liste de valeurs dans une autre[AJAX] Afficher données d'une BDD avec filtrage via liste déroulante
problème avec le constructeur de copiecomment ajouter une liste de url dans les favoris
[VBA WORD] Liste deroulante avec source Excelquestion sur un constructeur
Liste déroulante et cookiesJAVA Modification d'un champ avec une liste déroulante
Convertir un tableau en liste de données VBA sous Excelliste droulante
Plus de sujets relatifs à : constructeur et liste d'initialisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR