Theorie auf C ++ Konvention bezüglich Bereinigung des Haufens, ein vorgeschlagenes zu bauen, ist es gute Praxis?

StackOverflow https://stackoverflow.com/questions/3649919

Frage

ich eine andere Theorie Frage haben, wie der Titel vorgeschlagen, es ist eine Ansammlung von Code zu bewerten. Im Grunde bin ich angesichts überall diese Vorlage verwendet wird.

Ich bin mit VC ++ VS2008 (alles inklusive)

  

Stapel.h

class Stapel
{
public:
    //local vars
    int x;

private:
public:
    Stapel();
    Stapel(int value);
    ~Stapel(){}

    //getters setters
    void set_x(int value)
    {
        x = value;
    }

    int get_x(int value)
    {   
        x = value;
    }   

void CleanUp();

private:
};
  

Stapel.cpp

#include "Stapel.h"

Stapel::Stapel()
{

}

Stapel::Stapel(int value)
{
    set_x(value);
}

void Stapel::CleanUp()
{
    //CleanUpCalls
}

Der Schwerpunkt hier ist die Bereinigungsverfahren, im Grunde möchte ich überall in allen meinen Dateien, die Methode setzen und einfach lassen Sie es tun, um meine Anrufe löschen, wenn nötig, um sicherzustellen, es ist alles an einem Ort und ich kann von fliegenden Lösch des verhindern die sich um, als Anfänger, auch ich weiß, ist wahrscheinlich nicht etwas, das Sie zu verwirren wollen, um mit noch einen schlampigen Haufen hat.

Was ist mit diesem Build?

Gute schlecht? warum?

Und was ist Destruktoren für solche Aufgaben mit?

War es hilfreich?

Lösung

-Boost bietet verschiedene Dienstprogramme für RAII -Stil heap-Managment:

  1. Smart-Pointer (es gibt mehrere Implementierungen hier für verschiedene Szenarien)
  2. Pointer Container

Die Nachteile des Vorschlags:

  1. Sie in Ihrer Implementierung, müssen Sie noch einen Lösch in der CleanUp-Methode für jede Heap-Zuordnung zu platzieren erinnern Sie tun. Diese Zuweisungen Tracking kann sehr schwierig sein, wenn Ihr Programm jede Art von nicht-linearen Steuerfluss hat (einige Zuweisungen nur unter bestimmten Umständen passieren könnte). Durch die Bindung der Aufhebung der Zuordnung von Ressourcen (in diesem Fall Speicher) auf die Lebensdauer von Objekten auf dem Stapel, müssen Sie sich keine Sorgen zu machen so viel . Sie müssen noch Dinge wie zirkuläre Referenzen betrachten.
  2. RAH hilft Ihnen schreiben ausnahmefest Code.
  3. Nach meiner Erfahrung RAII führt zu mehr strukturierten Code. Objekte, die nur innerhalb einer bestimmten Schleife oder Niederlassung benötigt werden nicht woanders initialisiert werden, sondern direkt in den Block, wo sie gebraucht werden. Dies macht Code leichter zu lesen und zu halten.

Edit: Eine gute Möglichkeit, die Umsetzung zu beginnen, dass bekommen Boost- . Dann wird Ihr Code für rohe Zeiger suchen, und versuchen, jeden Zeiger von

ersetzen
  1. Eine Referenz
  2. Ein Smart-Zeiger
  3. Ein Zeiger Container, wenn es ein Behälter ist, die Zeiger
  4. besitzt

Wenn dies geschehen ist, sollten Sie Ihren Code keine deletes mehr enthalten. Wenn Sie make_shared , können Sie sogar alle beseitigen news. Wenn Sie auf Probleme stoßen, dass Sie nicht selbst lösen können, überprüfen stackoverflow.com ... oh warten, Sie wissen, dass man schon;)

Andere Tipps

Verwenden Sie intelligente Zeiger und RAII statt. Das wird nicht alle deletes an einem Ort zentriert, sondern entfernen Sie sie aus dem Code. Wenn Sie irgendeine Bereinigung ausführen müssen sich selbst, das ist, was Destruktoren sind, nutzen sie, wie das ist, die Konvention in C ++.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top