Frage zu struct



  • Ich versuche gerade fremden Code zu verstehen und hänge an folgender Passage fest.

    struct wdata {
          wdata()
    	:
    	conflicting(nullptr),
    	reslit(0),
    	prefix()
          {}
          wdata( const Reason& conflcl, 
                const Literal& lit, 
                const Reason& reason )
    	:
    	conflicting(conflcl),
    	reslit(lit),
    	prefix(reason)
          {}
          Reason conflicting;
          Literal reslit;
          Reason prefix; 
        };
    

    struct habe ich zwar schon gelernt. Aber bisher waren da nur Parameter drin. Ich nehme an hier handelt es sich um eine Art Überladung? Oder was geschieht hier?


  • Mod

    struct und class sind das gleiche, bis auf die Standardsichtbarkeit. Das heißt, structs können genau so wie Klassen eigene Methoden haben. Also unter anderem auch, wie hier, einen Konstruktor. Und der darf dann, ebenfalls wie hier, auch überladen sein. Und wenn man es vernünftig formatiert, dann ist es sogar lesbar:

    struct wdata 
    {
        Reason conflicting;
        Literal reslit;
        Reason prefix;
    
        wdata(): conflicting(nullptr), reslit(0), prefix() {}
    
        wdata(const Reason& conflcl, const Literal& lit, const Reason& reason):
            conflicting(conflcl), reslit(lit), prefix(reason) {}
    };
    

    Die Syntax mit dem Doppelpunkt ist eine Initialisierungsliste, falls du das noch nie gesehen haben solltest.


Anmelden zum Antworten