<?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[[Solved]Mehrfacher Destruktoraufruf für dasselbe Objekt?]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Bei einem kleinen Testprogramm das ich geschrieben<br />
habe, stoße ich gerade auf ein unerklärliches Phänomen.<br />
Erstmal der simple Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class Test {

        public:
        Test(int number=0) : number(number) {
                cout &lt;&lt; &quot;\tKonstruktor &quot; &lt;&lt; number &lt;&lt; endl;
        }

        ~Test() {
                cout &lt;&lt; &quot;\tDestruktor &quot; &lt;&lt; number &lt;&lt; endl;
        }

        private:
        int number;

};

int main() {

        vector&lt;Test&gt; container;

        cout &lt;&lt; &quot;Fülle Container&quot; &lt;&lt; endl;
        for(int i=0; i &lt; 3; i++) {
                container.push_back(Test(i));
                cout &lt;&lt; endl;
        }

        cout &lt;&lt; &quot;Container voll&quot; &lt;&lt; endl;

        return 0;

}
</code></pre>
<p>Und nun die Ausgabe die mich so verwirrt<br />
(compiliert ohne Optimierung mit dem g++-4.1)</p>
<pre><code>Fülle Container
        Konstruktor 0
        Destruktor 0

        Konstruktor 1
        Destruktor 0
        Destruktor 1

        Konstruktor 2
        Destruktor 0
        Destruktor 1
        Destruktor 2

Container voll
        Destruktor 0
        Destruktor 1
        Destruktor 2
</code></pre>
<p>Wie man deutlich sieht werden bei jedem neuen Objekt<br />
im vector die bereits vorhandenen zerstört.<br />
(was mich bei push_back auch nicht wundern würde,<br />
wenn auch wieder der Konstruktor aufgerufen wird)</p>
<p>Im Endeffekt wird also das Objekt Nummer 0, 4 mal zerstört!</p>
<p>Kann jemand das bei einem anderen Compiler nachvollziehen?<br />
Ist dieses Verhalten irgendwie erklärbar?<br />
Ist es gar standardkonform?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191818/solved-mehrfacher-destruktoraufruf-für-dasselbe-objekt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 06:10:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191818.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Sep 2007 19:50:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Solved]Mehrfacher Destruktoraufruf für dasselbe Objekt? on Thu, 06 Sep 2007 20:05:00 GMT]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Bei einem kleinen Testprogramm das ich geschrieben<br />
habe, stoße ich gerade auf ein unerklärliches Phänomen.<br />
Erstmal der simple Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class Test {

        public:
        Test(int number=0) : number(number) {
                cout &lt;&lt; &quot;\tKonstruktor &quot; &lt;&lt; number &lt;&lt; endl;
        }

        ~Test() {
                cout &lt;&lt; &quot;\tDestruktor &quot; &lt;&lt; number &lt;&lt; endl;
        }

        private:
        int number;

};

int main() {

        vector&lt;Test&gt; container;

        cout &lt;&lt; &quot;Fülle Container&quot; &lt;&lt; endl;
        for(int i=0; i &lt; 3; i++) {
                container.push_back(Test(i));
                cout &lt;&lt; endl;
        }

        cout &lt;&lt; &quot;Container voll&quot; &lt;&lt; endl;

        return 0;

}
</code></pre>
<p>Und nun die Ausgabe die mich so verwirrt<br />
(compiliert ohne Optimierung mit dem g++-4.1)</p>
<pre><code>Fülle Container
        Konstruktor 0
        Destruktor 0

        Konstruktor 1
        Destruktor 0
        Destruktor 1

        Konstruktor 2
        Destruktor 0
        Destruktor 1
        Destruktor 2

Container voll
        Destruktor 0
        Destruktor 1
        Destruktor 2
</code></pre>
<p>Wie man deutlich sieht werden bei jedem neuen Objekt<br />
im vector die bereits vorhandenen zerstört.<br />
(was mich bei push_back auch nicht wundern würde,<br />
wenn auch wieder der Konstruktor aufgerufen wird)</p>
<p>Im Endeffekt wird also das Objekt Nummer 0, 4 mal zerstört!</p>
<p>Kann jemand das bei einem anderen Compiler nachvollziehen?<br />
Ist dieses Verhalten irgendwie erklärbar?<br />
Ist es gar standardkonform?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360481</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Thu, 06 Sep 2007 20:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved]Mehrfacher Destruktoraufruf für dasselbe Objekt? on Thu, 06 Sep 2007 19:51:50 GMT]]></title><description><![CDATA[<p>Beim push_back werden Kopien erzeugt, du loggst aber den Kopierkonstruktor nicht mit. Klar, dass das dann komisch aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360482</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 06 Sep 2007 19:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved]Mehrfacher Destruktoraufruf für dasselbe Objekt? on Thu, 06 Sep 2007 20:04:18 GMT]]></title><description><![CDATA[<p>Ohhh <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Und ich zermahl mir hier das Hirn was da vor sich geht.</p>
<p>Man manchmal hat man einfach ein Brett vor dem Kopf.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360486</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Thu, 06 Sep 2007 20:04:18 GMT</pubDate></item></channel></rss>