<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fragen zum Destruktor]]></title><description><![CDATA[<p>Ich habe da eine Frage zum Destruktor. Bisher sind Destruktoren bei mir einfach immer nur leer und ich habe mir noch keine Gedanken darüber gemacht, nun hab ich aber eine Klasse wo das glaub angebracht wäre:</p>
<pre><code>class BildDaten : public Daten
{
  public:
    BildDaten(std::string, int, int, Bild*);
    virtual ~BildDaten();
    int leseWert() const;

  private:
    Bild* B;

};

BildDaten::BildDaten(std::string S, int B, int W, Bild* b) : Daten(S, B), Wert(W), B(b) {};

BildDaten::~BildDaten(){};
</code></pre>
<p>Wie zu sehen hab ich nun einen privaten Zeiger auf ein Bild, das bei Erstellung in Konstruktor übergeben wird. Heißt das ich muss bei der Löschung eines solchen Objektes dafür sorgen, dass das Objekt (Bild) hinter dem Zeiger B auch gelöscht wird? Dann muss in den Destruktor ein delete B?<br />
Kann ich sagen, dass wenn eine Klasse nur primitive Datentypen (int, float, usw.) enthält der Destruktor leer sein kann, bei Zeigern ich mir aber mehr überlegen muss?</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258406/fragen-zum-destruktor</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 23:08:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258406.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jan 2010 10:30:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zum Destruktor on Sun, 10 Jan 2010 10:30:20 GMT]]></title><description><![CDATA[<p>Ich habe da eine Frage zum Destruktor. Bisher sind Destruktoren bei mir einfach immer nur leer und ich habe mir noch keine Gedanken darüber gemacht, nun hab ich aber eine Klasse wo das glaub angebracht wäre:</p>
<pre><code>class BildDaten : public Daten
{
  public:
    BildDaten(std::string, int, int, Bild*);
    virtual ~BildDaten();
    int leseWert() const;

  private:
    Bild* B;

};

BildDaten::BildDaten(std::string S, int B, int W, Bild* b) : Daten(S, B), Wert(W), B(b) {};

BildDaten::~BildDaten(){};
</code></pre>
<p>Wie zu sehen hab ich nun einen privaten Zeiger auf ein Bild, das bei Erstellung in Konstruktor übergeben wird. Heißt das ich muss bei der Löschung eines solchen Objektes dafür sorgen, dass das Objekt (Bild) hinter dem Zeiger B auch gelöscht wird? Dann muss in den Destruktor ein delete B?<br />
Kann ich sagen, dass wenn eine Klasse nur primitive Datentypen (int, float, usw.) enthält der Destruktor leer sein kann, bei Zeigern ich mir aber mehr überlegen muss?</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836114</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Sun, 10 Jan 2010 10:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zum Destruktor on Sun, 10 Jan 2010 10:53:39 GMT]]></title><description><![CDATA[<p>Wenn BildDaten den Besitz und die Kontrolle über das Bild übernehmen soll, sollten im Destruktor falls nötig Resourcen freigegeben werden.<br />
Das muss ja aber nicht immer der Fall sein.<br />
Dir muss dabei auch klar sein, dass das Bild gelöscht ist sobald ein BildDaten Objekt seinen Destruktor aufruft. Vor allem bei Kopien von BildDaten musst du da genau aufpassen (z.B. wenn du solche Objekte in einen Container packst). Am einfachsten ist es hier einen tr1::shared_ptr&lt;Bild&gt; zu verwenden, der die Kontrolle drüber übernimmt wann das Bild gelöscht wird, nämlich wenn es wirklich niemand mehr braucht.</p>
<p>Generell ist aber der Destruktor genau der richtige Ort für Aufräumarbeiten (<a href="http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization" rel="nofollow">RAII</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836124</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 10 Jan 2010 10:53:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zum Destruktor on Tue, 19 Jan 2010 16:03:17 GMT]]></title><description><![CDATA[<p>Das mit der Kontrolle hab ich geregelt, vielen Dank!</p>
<p>Hab da nun ein konkretes Problem mit dem Destruktor in Zusammen hang mit boost::thread. Dafür hab ich aber besser einen eigenen Thread gemacht: <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1841446.html#1841446" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1841446.html#1841446</a><br />
Ich hoffe jemand kann mir weiterhelfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841488</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Tue, 19 Jan 2010 16:03:17 GMT</pubDate></item></channel></rss>