Konstruktor



  • Hallo,
    ich verstehe eine sache nicht so ganz undzwar in diesem code:

    datum(int T, int M, int J)
      {
        tag=T; monat=M; jahr=J;
      };
    

    wird der konstruktor erstellt und ihm werden 3 parameter übergeben T M und J im anweisungsblock weist er tag T, monat M und jahr J zu, aber was bringt im das??

    mfg Morphix



  • Dem Konstruktor bringt das garnichts aber dir (hoffentlich) 😃
    Der Sinn dieses Konstruktors ist es, dass du deiner Klasse schon beim erstellen definierte Werte, eben Tag, Monat und Jahr zuweisen kannst...
    Dieser Konstruktor wird aber natürlich nur aufgerufen, wenn du beim Erstellen einer Klasseninstanz die entsprechenden Parameter mit übergibst:

    ...
    datum heute(24, 8, 2007);
    
    //oder
    
    datum* heute = new datum(24, 8, 2007);
    ...
    

    Grüße,

    Martin



  • Morphix schrieb:

    Hallo,
    ich verstehe eine sache nicht so ganz undzwar in diesem code:

    datum(int T, int M, int J)
      {
        tag=T; monat=M; jahr=J;
      };
    

    wird der konstruktor erstellt und ihm werden 3 parameter übergeben T M und J im anweisungsblock weist er tag T, monat M und jahr J zu, aber was bringt im das??

    mfg Morphix

    im normalfall handelt es sich bei tag,monat und jahr um private variablen der klasse datum, auf welche von außen nicht direkt zugegriffen werden kann. um solche stressigen schreiberein wie

    datum a;
    a.setTag(wert);
    a.setMonat(wert);
    a.setJahr(wert);
    

    zu umgehen , verwendet man konstruktoren um die werte gleich zu übergeben.



  • Danke an euch beide 😃 habt mir wirklich geholfen

    mfg Morphix



  • wenn du etwas initialisieren willst, nimmt bitte eine initialisierungsliste.

    datum(int T, int M, int J) 
     : tag(T), monat(M), jahr(J)
      {};
    

    links, was das bedeutet findest du ab hier: http://www.c-plusplus.net/forum/viewtopic-var-p-is-1351210.html#1351210



  • Und wieso initialisierungsliste? Kann man nicht einfach im Funktionsteil des Konstruktors die Werte zuweisen? Klar für Objekte versteh ichs, aber wieso ganz normale int's in die initialisierungsliste stecken?



  • weil sie dort deutlich machen, um was es sich handelt. wenn ich initialisiere, sollte man das aus meiner sicht auch exakt so kennzeichnen und nicht eine zuweisung dafür benutzen. das erspart späteren lesern arbeit. ist natürlich in diesem fall nicht nötigt, da das bsp trivial ist. nur sollte man es sich generell angewöhnen, dann vergisst man es auch nicht, wenn der code nicht mehr ganz so trivial ist


Anmelden zum Antworten