Konstruktor



  • Hi

    Was ist der unterschied von

    class Klasse
    {
        int a;
    
      public:
        Klasse(int new_a)
        {
          a = new_a;
        };
    };
    

    und

    class Klasse
    {
        int a;
    
      public:
        Klasse(int new_a) : a(new_a)
        {
        };
    };
    

    ?



  • keiner.
    Aber mach mal

    string a;
    

    Dann wird entweder
    ein leerer String erzeugt(FA) und dann im was neues zugewiesen(FA)
    oder
    ein Sting mit was neuem konstuiert(FA).

    Also nur ein Funktionsaufruf (FA) statt zweien.



  • X.DarkForce.X schrieb:

    Was ist der unterschied von

    a = new_a;
    

    und

    : a(new_a)
    

    ?

    Das erste ist eine Zuweisung, das zweite ist eine Initialisierung. Und der Unterschied zwischen Zuweisung und Initialisierung ist der, dass es bei einer Zuweisung schon ein Objekt geben muss und bei der Initialisierung es gerade erzeugt wird. Das ist zB dann wichtig, wenn 'a' von einem Klassentyp ist, der keinen Default-Konstruktor hat. Dann funktioniert Dein erster Ansatz nämlich nicht.

    Das kann man in jedem C++ Buch nachlesen. Hast Du keins?



  • ... und bei const.



  • ... und bei Referenz



  • ... und bei nicht zuweisbaren Objekten


Log in to reply