mehrere destruktoren?



  • Hallo,

    ich hätte eine generelle frage: Ist es üblich mehrere unterschiedliche destruktoren zu haben? Also bei konstruktoren ist mir das klar aber ist das bei destruktoren auch so?

    ist das nicht ein zeichen von schlechtem design?

    Und wie sollte man dann die destruktoren untrscheiden? Ich meine überladene destruktoren geht ja nicht wenn man unterschiedliche member hat von der klasse.

    meine frage zielt auf folgendes ab:

    1mal habe ich eine klasse instantiiert die viele member hat.
    1mal nur instantiiert um auf 1 methode der klasse zuzugreifen.

    bei letzterem sind keine memeber angelegt also brauche ich auch keinen "normalen" sondern nur leeren destruktor. nur wie mache ich das ?



  • Das was du einzeln brauchst in eine andere Klasse auslagern.



  • afaiko schrieb:

    1mal habe ich eine klasse instantiiert die viele member hat.
    1mal nur instantiiert um auf 1 methode der klasse zuzugreifen.

    Damit hast du eine Klasse für zwei offenbar völlig verschiedene Anwendungen. Das verstößt gegen das SRP und zeugt von nicht besonders gut durchdachtem Design. Du brauchst also keine zwei Destruktoren, sondern ein anderes Design. Zum Beispiel 2 Klassen, von denen jede eine der beiden Aufgaben übernimmt. Und gemeinsame Funktionalität wird in einer ander Klasse/Funktion ausgelagert, die von beiden benutzt wird (oder die eine benutzt die andere).



  • pure virtuelle Methoden wären ein Stichwort. Hat nichts mit deinen zwei Destruktoren zu tun, ist aber das Design, was du brauchst.



  • Artchi schrieb:

    pure virtuelle Methoden wären ein Stichwort. Hat nichts mit deinen zwei Destruktoren zu tun, ist aber das Design, was du brauchst.

    Ist nicht gesagt. Bei den wenigen Informationen die er liefert, ist nichtmal klar, ob eine Klassenhierarchie überhaupt sinnvoll wäre. Geschweige denn pur virtuelle Methoden.



  • Wenn du ein Objekt nur deswegen anlegst, um eine Methode darauf aufzurufen, die keine Member verändert oder benötigt, dann gehört diese Methode ziemlich sicher nicht in die Klasse. Genaueres kann man aber nur sagen, wenn du uns den relevanten Code zeigst.



  • wie willst du bitte mehrere destruktoren haben? Willst du dann beim löschen argumente übergeben oder wie? Wie soll denn der Compiler wissen welchen Destruktor er nehmen soll wenn es mehrere gibt...
    Denk da mal drüber nach 😉

    Denke mal die anderen haben dir hier schon ganz gute Hilfestellung gegeben...


Anmelden zum Antworten