C++ Destruktur wird einfach aufgerufen?
Also ich muss eine kleine Konsolenapp schreiben und hab auch fast alles richtig, nur wird der Destruktur am Anfang irgendwie aufgerufen und ich weiß nicht warum. Das ist mein Code. 2 Klassen, Student und Mitarbeiter:
Und die Main:
Die Ausgabe sieht so aus:
(Manche geschweiften Klammern passten nicht mehr in die Screenshots) Das gelbe darf eigentlich nicht da sein. Ich weiß nicht wo mein Fehler liegt, ob das ein Leichtsinnsfehler oder irgendetwas größeres ist.
Wäre für jede Hilfe dankbar.
Wenn man den Code ausführt erscheint bei der dritten Zeile in der Konsole "Destruktor Student: Maier" was da eigentlich nicht sein sollte.
Also hier nochmal der Code:
bilder werden hier meist nicht verarbeitet, wir sind bei code , gehört als text irgendwo auf pastebin, damit man auch entsprechend das analysieren kannund zeilenangaben
Also soll ich den Code mal reinschicken?
2 Antworten
scheint das dein student out of scope geht
A destructor is a member function that is invoked automatically when the object goes out of scope or is explicitly destroyed by a call to delete
was ich bei zeile 103 vermute
ich könnte mir vorstellen das es duch
Mitarbeiter mit_maier = Mitarbeiter(stud_maier);
passiert, hier wird eine kopie übergeben und beim verlassen wird das objekt wieder zerstört . da es nicht mehr gebraucht wird .
Hmm brauch ich dann einen Student *next; etc?
*stud_maier
und
Mitarbeiter(Student** test)
oder so . irgendwie war das , ich habs gerade nciht aufm zettel .
Ich darf aber die Main-Funktion nicht verändern soweit ich weiß
und deine aufgabe ist es aber das destructor zu verhindern ???
Ne ich muss die richtige Ausgabe haben und der Destruktur (bei der Ausgabe) ist da fehl am Platz. Ich habe grade einfach "Mitarbeiter(Student &test)"(Zeile 70) gemacht und es hat jetzt geklappt. Weiß nicht genau warum, falls du es wissen tust wäre ich dankbar wenn du es erklären kannst.
Die Werteübergabe an den Mitarbeiter-Konstruktor erfolgt by value. Sobald der Konstruktorkörper durchlaufen ist, wird dieses Objekt wieder aus dem Speicher gelöscht und löst dabei auch einen Destruktoraufruf aus.
Ja das hab ich mir auch schon gedacht, aber warum?