<?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[Kopierkonstruktor passt das so?]]></title><description><![CDATA[<p>Also ich mach das schon richtig oder? Bei nem Kopierkonstruktor muss ich doch nur alles Zeiger neu definieren, weil sonst beide Objekte auf die gleiche Speicherstelle auf dem Heap verweisen würden? Nicht aber normale Variablen ? Die muss man doch nicht irgendwie neu definieren oder so? Aber warum muss ich die nicht neu definieren? Macht das der Compiler automatisch oder wie läuft das ab? Hier mal mein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Cat
{
    public:
    Cat(int Age,int Weight,string Name);
    Cat(const Cat &amp;rhs);
    ~Cat();
    int GetAge() const {return *itsAge;}
    int GetWeight() const {return *itsWeight;}

    private:
    int *itsAge;
    int *itsWeight;
    string itsName;
};

Cat::Cat(int Age,int Weight,string Name)
:itsAge(new int),itsWeight(new int),itsName(Name)
{
    *itsAge=Age;
    *itsWeight=Weight;
}

Cat::Cat(const Cat &amp;rhs)
:itsAge(new int),itsWeight(new int)
{
    *itsAge=rhs.GetAge();
    *itsWeight=rhs.GetWeight();
}

Cat::~Cat()
{
    delete itsAge;
    delete itsWeight;
}

int main()
{

    return 0;
}
</code></pre>
<p>Passt das so? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174029/kopierkonstruktor-passt-das-so</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 13:08:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174029.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Feb 2007 11:15:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 11:15:08 GMT]]></title><description><![CDATA[<p>Also ich mach das schon richtig oder? Bei nem Kopierkonstruktor muss ich doch nur alles Zeiger neu definieren, weil sonst beide Objekte auf die gleiche Speicherstelle auf dem Heap verweisen würden? Nicht aber normale Variablen ? Die muss man doch nicht irgendwie neu definieren oder so? Aber warum muss ich die nicht neu definieren? Macht das der Compiler automatisch oder wie läuft das ab? Hier mal mein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Cat
{
    public:
    Cat(int Age,int Weight,string Name);
    Cat(const Cat &amp;rhs);
    ~Cat();
    int GetAge() const {return *itsAge;}
    int GetWeight() const {return *itsWeight;}

    private:
    int *itsAge;
    int *itsWeight;
    string itsName;
};

Cat::Cat(int Age,int Weight,string Name)
:itsAge(new int),itsWeight(new int),itsName(Name)
{
    *itsAge=Age;
    *itsWeight=Weight;
}

Cat::Cat(const Cat &amp;rhs)
:itsAge(new int),itsWeight(new int)
{
    *itsAge=rhs.GetAge();
    *itsWeight=rhs.GetWeight();
}

Cat::~Cat()
{
    delete itsAge;
    delete itsWeight;
}

int main()
{

    return 0;
}
</code></pre>
<p>Passt das so? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233154</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Thu, 22 Feb 2007 11:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 11:22:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das du den Wert in den Pointern kopierst und nicht die Adresse selber ist schon richtig.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233158</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 22 Feb 2007 11:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 11:22:42 GMT]]></title><description><![CDATA[<p>Wenn du keinen Copy-Ctor hast, erzeugt der Compiler dir einen - und der ruft die Copy-Ctoren der Member auf (Problem bereiten hier nur Member, die keinen in deinem Sinn vernünftigen Copy-Ctor haben - z.B. Zeiger). Wenn du deinen eigenen Copy-Ctor definierst, mußt du dich selber um die Kopier-Operationen kümmern (wenn nichts anderes in der Initialisierungsliste angegeben ist, verwendest du den Default-Ctor für die Member) - auch bei &quot;normalen&quot; Elementen:</p>
<pre><code class="language-cpp">Cat::Cat(const Cat &amp;rhs)
:itsAge(new int(rhs.GetAge())),itsWeight(new int(rhs.GetWeight())),itsName(rhs.GetName())
{}
</code></pre>
<p>PS: Warum legst du die beiden int-Werte überhaupt auf dem Heap an? Die sind doch klein genug, um direkt im Objekt untergebracht zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233160</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Feb 2007 11:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 11:33:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
Is nur eine Übung. Darum hab ich die auf dem Heap angelegt :). Übung macht den Meister^^(also hoff ich mal)<br />
EDIT:<br />
Ah ich sehs grad man kann anscheinend auch alles in die Initialisierungsliste stecken! Ist das besser so? Wird dadurch das Programm schneller? Was istn eure Meinung dazu, wie mach ich das am besten in Zukunft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233164</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Thu, 22 Feb 2007 11:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 11:52:01 GMT]]></title><description><![CDATA[<p>Ja, das Programm wird dadurch etwas schneller, weil du dir eine Zuweisung einsparen kannst:</p>
<pre><code class="language-cpp">class test
{
  string data;
public:
  //Default-Ctor und anschließende Zuweisung
  test(const string&amp; val) {data=val;}
  //Copy-Ctor
  test(const string&amp; val):data(val) {}
};
</code></pre>
<p>(außerdem gibt es bestimmte Fälle (Referenzen, const Member, Member ohne Default-Ctor,...), bei denen du die Werte NUR über die Initialisierungsliste vorbelegen kannst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233185</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Feb 2007 11:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 13:03:20 GMT]]></title><description><![CDATA[<p>Ich will ja jetzt hier nicht klugscheißen, aber wenn du dir ganz sicher sein willst, dass keine Speicherlücken entstehen oder deine Objekte in einem inkonsistenten Zusatnd sind, solltest du freien Speicher (auf dem Heap) folgendermaßen Nutzen (das gilt nur, wenn die Objekte, die abgelegt werden auch nur dem objekt alleine gehören, in dem sie gespeichert werden):</p>
<pre><code class="language-cpp">Cat::Cat(const Cat &amp;rhs)
: itsName(rhs.itsName)
{
    int *t_age = 0, *t_weight = 0;
    try
    {
        t_age = new int(*rhs.itsAge);
        t_weight = new int(*rhs.itsWeight);
    }
    catch(...)
    {
        delete t_age;
        delete t_weight;
        throw;
    }
    itsAge = t_age;
    itsWeight = t_weight;
}
</code></pre>
<p>Dadurch wird sichergestellt, dass, falls keine Speicher angefordert werden kann, dass dein Objekt so bleibt, wie es war. Falls außerdem new erst bei t_weight fehlschlägt, wird t_age wieder freigegeben. Das delete auf t_weight wird nicht fehlschlagen, weil new im Falle eines Fehlers eine Ausnahme wirft und der Pointer damit auf 0 bleibt, welcher vom delete nicht weiter angefasst wird.<br />
Nebenbei solltest du auch daran denken, den Zuweisungsoperator zu überladen. Sonst wird das zu Problemen führen:</p>
<pre><code class="language-cpp">Cat kitty(2, 10, &quot;Kitty&quot;);
Cat kitty2;
kitty2 = kitty; //hier werden die Zeiger kopiert.

kitty.~Cat(); //hier wird der Speicher freigegeben
kitty2.~Cat(); //und hier versucht das Objekt dann Speicher freizugeben, der ihm nicht gehört.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1233256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233256</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 13:01:36 GMT]]></title><description><![CDATA[<p>viande schrieb:</p>
<blockquote>
<p>Ich will ja jetzt hier nicht klugscheißen, aber wenn du dir ganz sicher sein willst, dass keine Speicherlücken entstehen oder deine Objekte in einem inkonsistenten Zusatnd sind, solltest du freien Speicher (auf dem Heap) folgendermaßen Nutzen (das gilt nur, wenn die Objekte, die abgelegt werden auch nur dem objekt alleine gehören, in dem sie gespeichert werden):</p>
<pre><code class="language-cpp">Cat::Cat(const Cat &amp;rhs)
: itsName(rhs.itsName)
{...}
</code></pre>
</blockquote>
<p>Und was hast du da bei einem Fehler? Eine benannte Katze ohne Alter und Gewicht. Wenn bei der Initialisierung etwas schiefgegangen ist, sollte auf keinen Fall ein halbfertiges Objekt zurückbleiben (das ist mitunter noch schlimmer als ein Speicherleck).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233266</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:01:36 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 13:02:04 GMT]]></title><description><![CDATA[<p>Entschuldigung, aber deine Version des CopyCTors ist ziemlicher Unsinn. Wenn da eine Exception auftritt machst du zwar ein delete weist aber danach die ungültigen Zeiger zu. Was willst du mit dem ungültigen Objekt dann überhaupt machen?<br />
Wenn in einem Konstruktor oder CopyKonstruktor eine Exception fliegt sollte die nach draußen gehen, und dem Programm sagen, dass dein Objekt nicht erstellte werden konnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233267</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 13:11:47 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Entschuldigung, aber deine Version des CopyCTors ist ziemlicher Unsinn. Wenn da eine Exception auftritt machst du zwar ein delete weist aber danach die ungültigen Zeiger zu. Was willst du mit dem ungültigen Objekt dann überhaupt machen?<br />
Wenn in einem Konstruktor oder CopyKonstruktor eine Exception fliegt sollte die nach draußen gehen, und dem Programm sagen, dass dein Objekt nicht erstellte werden konnte.</p>
</blockquote>
<p>Ups, hatte das erneute Werfen der Ausnahme vergessen :o</p>
<blockquote>
<p>Und was hast du da bei einem Fehler? Eine benannte Katze ohne Alter und Gewicht. Wenn bei der Initialisierung etwas schiefgegangen ist, sollte auf keinen Fall ein halbfertiges Objekt zurückbleiben (das ist mitunter noch schlimmer als ein Speicherleck).</p>
</blockquote>
<p>Das mit der Konsistenz war hier vielleicht fehl am Platz. Das ist bei ähnlicher Nutzung eher auf den Zuweisungsoperator anzuwenden.<br />
Aber hier auch das gleiche: ich hatte das throw vergessen. Wenn nun keiner die Exception abfängt, kann ich das auch nicht ändern. Wäre aber bei der Version oben auch nicht anders: entweder man hat ein Speicherleck oder zwei 0-Zeiger. Wenn man diese nicht weiter überprüft geht man damit auch baden. So kann man aber die Ausnahmen abfangen und das Programm suber beenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233274</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 13:33:06 GMT]]></title><description><![CDATA[<p>Wenn die Exception vom Programm nicht gefangen wird, beendet sich das Programm sowieso und dann spielen Speicherlecks auch keine Rolle mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233296</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Feb 2007 13:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:16:45 GMT]]></title><description><![CDATA[<p>Mh, sagen wir mal, ich lege da zwei Objekte an die, die jeweils 1 MB groß sind. Außerdem unterstützt mein Betriebssystem kein Garbage Collection.<br />
Nun kriege ich für das 2. Objekt keinen Speicher und das erste liegt als Leiche im Speicher. 1MB verschwendet ... Weit hergeholt, weiß ich selber, ich bin lieber auf alle Eventualitäten vorbereitet, als das am Ende doch mal was schief geht.<br />
Bezogen auf den op=: wenn nun jemand die Ausnahme abfängt und dafür sorgt, dass das Programm ansonsten normal weiterläuft, habe ich als Ersteller dieser Klasse dafür Sorge zu tragen, dass ein Objekt nach so einem Fehlschlag konsistent bleibt. Bei dem Kopierkonstruktor sieht das natürlich anders aus, weil es ja vorher gar kein Objekt gab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233334</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:16:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:32:02 GMT]]></title><description><![CDATA[<p>Nun, die Betriebssysteme, die ich kenne räumen den Speicher nach beendigung eines programmes schon auf.<br />
Beim op= ist das natürlich anders. Hier kann man aber schön das swap-Idiom von Herb sutter verwenden und hat dann auch keine Probleme mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233349</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:32:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:34:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct Foo {
     Foo() : a(0), b(0) {
          Megabyte* a = new Megabyte;
          Megabyte* b = new Megabyte;
     }
     ~Foo() {
          delete a; delete b;
     }
     Megabyte* a,b;
};
</code></pre>
<p>Das geht doch völlig in Ordnung. Wenn ein new schiefgeht können 2 Dinge passieren:<br />
- Die Exception wird nicht gefangen, dann ist eh alles egal - Ende Gelände.<br />
- Die Exception wird gefangen, dann werden auch die Objekte vom Stack genommen, der Destruktor übernimmt das Löschen der bereits angelegten Objekte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233351</guid><dc:creator><![CDATA[gesunder Menschenverstand]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:39:30 GMT]]></title><description><![CDATA[<p>und wenn du beim op= von Megabyte ne exception hast biste verratzt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233354</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:48:22 GMT]]></title><description><![CDATA[<p>Ich sehe da kein Problem...</p>
<pre><code class="language-cpp">//in Foo
Foo&amp; operator=(Foo const&amp; rhs) {
    delete a; delete b;
    a = b = 0;
    a = new Megabyte(*rhs.a);
    b = new Megabyte(*rhs.b);
}
</code></pre>
<p>hier speziell braucht man noch ein this != &amp;rhs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233366</guid><dc:creator><![CDATA[gesunder Menschenverstand]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:48:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 14:49:20 GMT]]></title><description><![CDATA[<p>Oh du hast von Megabyte geschrieben das hab ich gar net gesehn. Was hat der mit der ganzen Sache zu tun, den verwend ich nie...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233369</guid><dc:creator><![CDATA[gesunder Menschenverstand]]></dc:creator><pubDate>Thu, 22 Feb 2007 14:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 15:01:21 GMT]]></title><description><![CDATA[<p>Genau hier gibts ein Problem. Wenn das erste new im op= eine Exception wirft hast du ein uninitialisiertes Objekt. Mach es so</p>
<pre><code class="language-cpp">struct Foo {
     Foo() : a(new Megabyte), b(new Megabyte) {}
     ~Foo() {
          delete a; delete b;
     }
     void Swap(Foo&amp; src)
     {
        std::swap(a, src.a);
        std::swap(b, src.b);
     }
    Foo&amp; operator=(Foo const&amp; rhs) 
    {
       Foo tmp(rhs);
       Swap(tmp);
       return *this;
    }
     Megabyte* a,b;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1233376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233376</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Feb 2007 15:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 15:25:36 GMT]]></title><description><![CDATA[<p>Oder nimm einfach shared_ptr aus boost oder tr1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233395</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Thu, 22 Feb 2007 15:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Thu, 22 Feb 2007 18:13:05 GMT]]></title><description><![CDATA[<p>gesunder Menschenverstand schrieb:</p>
<blockquote>
<p>- Die Exception wird gefangen, dann werden auch die Objekte vom Stack genommen, der Destruktor übernimmt das Löschen der bereits angelegten Objekte.</p>
</blockquote>
<p>Keineswegs. Der Destruktor wird nur für lebende Objekte aufgerufen, das heißt, der Konstruktor muss normal beendet worden sein. Das Werfen einer Exception innerhalb des Konstruktors (und sei es in der Initialisierungsliste) verhindert das. Grundsätzlich ist das Problem ohne RAII für mehr als eine Resource, deren Anforderung scheitern kann, kaum zu bändigen. Möglich ist es, aber nicht empfelenswert:</p>
<pre><code class="language-cpp">struct Foo
{
    Foo()
    try
    : a( ( a = NULL, new Megabyte() ) ),
      b( new Megabyte() )
    {}
    catch (...)
    {
        delete a;
    }
    Foo(const Foo&amp; other)
    try
    : a( ( a = NULL, new Megabyte( *other.a ) ) ),
      b( new Megabyte( *other.b ) )
    {}
    catch (...)
    {
        delete a;
    }
     ~Foo()
     {
          delete b;
          delete a;
     }
    Foo&amp; operator=(Foo const&amp; rhs)
    {
        Megabyte* new_a = new Megabyte( *rhs.a );
        try
        {
            Megabyte* new_b = new Megabyte( *rhs.b );
            delete b;
            delete a;
            a = new_a;
            b = new_b;
            return *this;
        }
        catch (...)
        {
            delete new_a;
            throw;
        }
    }
    Megabyte* a;
    Megabyte* b;
};
</code></pre>
<p>Bei Verwendung von scoped_ptr, auto_ptr oder ähnlichem wird das Ganze dagegen fast trivial.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233558</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 22 Feb 2007 18:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Fri, 23 Feb 2007 08:34:15 GMT]]></title><description><![CDATA[<p>Warum löscht du im try Block nur a? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Soweit ich weis ist es save auch nen null pointer zu löschen, ein delete b würde also nichts schaden..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233884</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Fri, 23 Feb 2007 08:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor passt das so? on Fri, 23 Feb 2007 09:05:19 GMT]]></title><description><![CDATA[<p>Bei seiner Variante ist b kein Nullpointer. Warum sollte er b auch löschen? Wenn eine Exception fliegt ist b sowieso nicht initialisiert und wenn keine fliegt muß man auch nichts löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233915</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 23 Feb 2007 09:05:19 GMT</pubDate></item></channel></rss>