So löschen Sie ein Objekt (Klasse) durch die Destruktor-Methode

Bin ich Frage mich, zu wissen, ist es möglich um ein Objekt zu löschen durch die Destruktor-Methode?

Konstruktor und Destruktor meiner Klasse:

class cal
{
    public:
        cal()
        {
            days = 0;
            day = 1;
            month = 1;
            year = 1300;
            leap = true;
        };
        ~cal()
        {
            delete this;
        }
}*calendar = new cal;

Wie kann ich das löschen dieser Zeiger durch Klasse?

P. S

Habe ich vergessen zu schreiben den folgenden code

cal *calandar = new cal[];

Möchte ich es im heap-stack nicht

Will ich mit dieser Klasse (Objekte) Häufig (viele, dass das Objekt) sich vorstellen, wie oft soll ich schreiben, löschen und machen es schwer, Verständnis, Problemlösung und-tracing-codes, die ich will, dass Sie zerstört worden ist, automatisch (im heap)

Benutzte ich folgenden code in meine Klasse, wenn ich exec "delete[] Kalender" es verringert meine rams besetzt (Größe des ram verwendet wird) funktioniert es einwandfrei (Zerstöre alle Objekte) durch beenden Programm? Da ich mit GNU/Linus und es zerstört alle Objekte, die mit oder ohne, dass die Zeilen die ich bin besorgt über undichte in windows

void DisposeObject() { delete this; }
  • warum müssen Sie? warum lassen Sie nicht den Aufruf-code löschen von Ihrem Objekt?
  • Wenn Sie möchten, um den Benutzer zu speichern ärger, nicht die Mühe! Wenn Sie daran interessiert sind, dass, sollten Sie werden über einen smart-pointer.
  • vielleicht, aber es ist nicht Pflicht Sie zu benutzen. Und irgendwo entlang der Linie das Wort delete verwendet werden
  • Es ist nichts falsch mit dem löschen this; es ist ein gemeinsames idiom. Aber Sie wollen nicht, es zu tun in den Destruktor.
  • Ist es überall dort verwendet, wo andere als ein Release() Methode? Ich habe nie gesehen, dass es anders verwendet wird.
  • In der OO-Programmierung ist es Häufig. Ein Objekt registriert sich für eine Reihe von Ereignissen, bei allem, was es repräsentiert, und wenn ein Ereignis kommt, der sagt, was es darstellt, ist nicht mehr gültig, es löscht sich selbst. (Transaktions-management kann bedeuten, dass die Register die für die Löschung am Ende der Transaktion---es ist ziemlich schwierig, ein Rollback für ein gelöschtes Objekt. Aber das ist nicht immer der Fall.)

InformationsquelleAutor MostafaJF | 2012-07-12
Schreibe einen Kommentar