IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Initialisation � Z�ro d'Objet C++


Sujet :

C++Builder

  1. #1
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par d�faut Initialisation � Z�ro d'Objet C++
    Je d�bute en C++, j'ai donc commenc� par le D�but, aujourd'hui, j'en suis au Constructeur !
    J'ai l'habitude de Delphi, rien que le comportement des Constructeurs et de l'H�ritage c'est tr�s diff�rent !

    J'ai remarqu� que mes Objets C++ (D�claration Statique ou Allocation Dynamique) comportaient des valeurs al�atoires

    Mes Objets C++ h�rit�s de TObject sont tout propre, tout est � z�ro (merci InitInstance)

    Existe-t-il une option pour qu'un Objet C++ soit tout � z�ro sans devoir tout �crire dans le constructeurs ou par une s�rie d'initialization var1(value1), var2(value2) ...
    Ou une m�thode barbare avec ZeroMemory ?
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  2. #2
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Citation Envoy� par ShaiLeTroll Voir le message
    tout �crire dans le constructeurs ou par une s�rie d'initialization var1(value1), var2(value2) ...
    Toujours fait comme �a....

  3. #3
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Oui, il me semble que c'est la seul mani�re

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par d�faut
    D�sol�, je remonte ce sujet d�j� r�solu, juste pour apporter une pr�cision � laquelle je n'avais pas fait attention avant sur le constructeur et le "zero init"

    Pour la class CClassWithDefaultConstruct, tout est � z�ro si l'on appel le constructeur explicitement (allocation statique ou dynamique)
    Les valeurs "al�atoires" ne sont que dans le cas d'une allocation statique simple

    Pour la class CClassWithEmptyConstruct
    On obtient bien ce qui la FAQ Quand dois-je d�finir un constructeur par d�faut ?
    Pour les types POD, les valeurs sont laiss�es non initialis�es.
    Peu importe la fa�on de d�clarer, c'est toujours "al�atoires" !!!

    N'est pas idiot !
    On devrait pouvoir appeler de son constructeur un z�ro init comme le fait le constructeur par d�faut sans devoir se taper
    CClassWithFullConstruct() : A(0), B(0), C(0), D(0) {}
    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
    //---------------------------------------------------------------------------
    class CClassWithDefaultConstruct
    {
    public:
      int A;
      double B;
      int C;
      int D;
    };
    //---------------------------------------------------------------------------
    class CClassWithEmptyConstruct
    {
    public:
      int A;
      double B;
      int C;
      int D;
     
      CClassWithEmptyConstruct() {}
    };
    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
    30
    31
    32
    33
    34
    35
    36
    37
      CClassWithDefaultConstruct A3;
      CClassWithDefaultConstruct B3;
      A3.A = 1;
      A3.B = 2.3;
      A3.C = 4;
      A3.D = 5;
      B3 = A3;
      A3.A = 6;
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", A3.A, A3.B, A3.C, A3.D));
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", B3.A, B3.B, B3.C, B3.D));
      CClassWithDefaultConstruct C3; // Aléatoire 
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", C3.A, C3.B, C3.C, C3.D));
      CClassWithDefaultConstruct D3 = CClassWithDefaultConstruct(); // Zero Init !
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", D3.A, D3.B, D3.C, D3.D));
      CClassWithDefaultConstruct *E3 = new CClassWithDefaultConstruct(); // Zero Init !
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", E3->A, E3->B, E3->C, E3->D));
      delete E3;
      MemoTrace->Lines->Add("");
     
      CClassWithEmptyConstruct A4;
      CClassWithEmptyConstruct B4;
      A4.A = 1;
      A4.B = 2.3;
      A4.C = 4;
      A4.D = 5;
      B4 = A4;
      A4.A = 6;
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", A4.A, A4.B, A4.C, A4.D));
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", B4.A, B4.B, B4.C, B4.D));
      CClassWithEmptyConstruct C4; // Aléatoire 
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", C4.A, C4.B, C4.C, C4.D));
      CClassWithEmptyConstruct D4 = CClassWithEmptyConstruct(); // Aléatoire 
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", D4.A, D4.B, D4.C, D4.D));
      CClassWithEmptyConstruct *E4 = new CClassWithEmptyConstruct(); // Aléatoire 
      MemoTrace->Lines->Add(AnsiString().sprintf("%d %f %d %d", E4->A, E4->B, E4->C, E4->D));
      delete E4;
      MemoTrace->Lines->Add("");
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Initialisation d'un objet � partir d'une session
    Par Tony_ducrocq dans le forum Langage
    R�ponses: 2
    Dernier message: 11/05/2009, 14h50
  2. R�ponses: 7
    Dernier message: 31/03/2009, 17h39
  3. R�ponses: 1
    Dernier message: 16/08/2007, 18h34
  4. Initialiser un membre (objet) static
    Par Chop_chop dans le forum C++
    R�ponses: 2
    Dernier message: 14/05/2007, 15h08
  5. Code Initialisation d'un objet COM (TAutoObject)
    Par desperado dans le forum Delphi
    R�ponses: 1
    Dernier message: 14/11/2006, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo