struct ist class ist struct ist was jetzt?



  • Ich habe hier einen ganz seltsamen Konstrukt, den ich so nicht verstehe. Im wesentlichen sieht das Ganze in etwa so aus:

    struct sc_dings
    {
       sc_dings(ushort count,ushort version = 1);
      ~sc_dings(void);
    }
    
    sc_dings   my_dings(0,0);
    

    D.h. da ist eine struct definiert, die Konstruktor und Destruktor hat, für die es auch noch eine Implementierung gibt - also ist das ja eigentlich eine Klasse? Doch wenn es ein struct ist, sollte ich dann natürlich auch in der Lage sein, ein Array vom Typ struct sc_dings anzulegen? Wenn ja: wie geht das, d.h. wie kriege ich da den Konstruktoraufruf mit unter?



  • In C++ sind struct das selbe wie Klassen. Mit dem Unterschied dass struct per default public-Zugriff auf die Elemente hat, bei class ist es private 🙂



  • Wenn ich mich recht entsinne ist bei C++ der einzige Unterschied zwischen class und struct das class default-private ist und struct default-public.

    Zur besseren Übersicht nehme ich für simple Strukturen/Hilfsklassen/Funktoren und PODs immer structs und für alles andere class.



  • Du kannst von Klassen und Structs Arrays machen. (ist ja dasselbe).
    Den Konstruktor kannst du dann aber nur einmal aufrufen, respektive es wird für alle Zellen der gleiche aufgerufen.



  • Wenn du ein Array nicht per Initialisierungsliste anlegst, wird bei Klassentypen immer der Standardkonstruktor aufgerufen (natürlich sofern vorhanden, ansonsten gibts einen Compilerfehler).

    Deshalb sind auch Container empfehlenswert, die können mit Kopierkonstruktoraufrufen (Pointer-Container wie die aus Boost sogar mit direkten spezifischen Konstruktoraufrufen) gefüllt werden.


Log in to reply