Seite 1 von 1

Destruktor mit Parameter

Verfasst: So Jun 22, 2014 5:50 pm
von naums
Hallo.

Eine kurze Frage, kann ich Destoren mit Parametern haben in C++ oder nicht? Und wie rufe ich die dann auf?

Code: Alles auswählen

bla::~bla( bool foobar )
{
    if (foobar)
        printf ("foobar");
}
MfG

Edit: Wer schreiben kann, ist klar im Vorteil.

Re: Destruktor mit Parameter

Verfasst: So Jun 22, 2014 5:55 pm
von xerion21
meines Wissens nach, kann man Destruktoren keine Parameter mitliefern.

EDIT:
Man kann Destruktoren keine Parameter mitliefern ;)

Gruß

Re: Destruktor mit Parameter

Verfasst: So Jun 22, 2014 7:14 pm
von naums
Vielen Dank.

Re: Destruktor mit Parameter

Verfasst: So Jun 22, 2014 7:40 pm
von Xin
naums hat geschrieben:Eine kurze Frage, kann ich Destoren mit Parametern haben in C++ oder nicht? Und wie rufe ich die dann auf?
Leider nicht, ich vermisse sie auch gelegentlich.

Du könntest eine "bool destructed" verwenden, die dem Destruktor sagt, ob das Objekt noch existiert bzw. er überhaupt handeln muss und Dir dann Methoden mit "destruct( ... )" erstellen, wobei der Destruktor nur this->destruct() aufruft, wenn destructed == false ist.

So wird das Objekt grundsätzlich abgebaut, aber wenn Du this->destruct( Parameter ) aufrufst, kannst den Abbau beeinflussen.

Re: Destruktor mit Parameter

Verfasst: So Jun 22, 2014 9:56 pm
von Architekt
Wo würde man so etwas denn auch brauchen?

Re: Destruktor mit Parameter

Verfasst: Mo Jun 23, 2014 11:41 am
von oenone
Bitte darauf achten, dass während dem Destruktor keine Exceptions geworfen werden sollten.

Re: Destruktor mit Parameter

Verfasst: Mo Jun 23, 2014 12:09 pm
von Architekt
In C++11 sind alle Destruktoren noexpect. Schmeißt du doch eine Exception, dann bricht dein Programm eben mit Terminate ab.

Re: Destruktor mit Parameter

Verfasst: Di Jun 24, 2014 8:05 am
von Xin
Architekt hat geschrieben:Wo würde man so etwas denn auch brauchen?
Im Prinzip überall da, wo Du statisch (also fest in das Programm eingebaut) weißt, dass Du den Destruktor anders nutzen möchtest: Zum Beispiel in eine Logdatei des Log-Objektes noch einen speziellen Text (z.B. eine Fehlerstatistik) reinschreiben, der normalerweise fehlt.

Muss man diesen von Hand reinschreiben, muss das überall da passieren, wo das Objekt zerstört wird. Ein überladnerer Destruktor wäre da schon schön... (ohne gleich unterschiedliche Datentypen verwenden zu müssen)