<?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[Interresantes verhalten bei fehlendem return.]]></title><description><![CDATA[<p>Ich bin beim Programmieren und Testen über eine Sache gestolpert, dessen Grund mir nicht klar ist. Erstmal mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Test
{
public:
	Test() {cout &lt;&lt; &quot;Konstruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }
	Test(const Test&amp; t) { cout &lt;&lt; &quot;Kopier-Konstruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }
	~Test() {cout &lt;&lt; &quot;Destruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }

	Test func( Test&amp; t ) {
		//return t;
	}
};

int main()
{
	Test t;
	t = t.func(t);
}
</code></pre>
<p>Die Ausgabe des Programms sieht bei mir so aus:</p>
<pre><code>Konstruktor: 3215463758
Destruktor: 3215463759
Destruktor: 3215463758
</code></pre>
<p>Kann mir einer erklären warum hier zwei mal der Destruktor ausgeführt wird? Und was ist das für ein Objekt? Es wird dafür ja kein Konstruktor aufgerufen.</p>
<p>Ich danke allen Antwortenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202458/interresantes-verhalten-bei-fehlendem-return</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 17:13:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202458.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Jan 2008 17:48:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Interresantes verhalten bei fehlendem return. on Fri, 11 Jan 2008 17:48:55 GMT]]></title><description><![CDATA[<p>Ich bin beim Programmieren und Testen über eine Sache gestolpert, dessen Grund mir nicht klar ist. Erstmal mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Test
{
public:
	Test() {cout &lt;&lt; &quot;Konstruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }
	Test(const Test&amp; t) { cout &lt;&lt; &quot;Kopier-Konstruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }
	~Test() {cout &lt;&lt; &quot;Destruktor: &quot; &lt;&lt; (unsigned int)this &lt;&lt; endl &lt;&lt; flush; }

	Test func( Test&amp; t ) {
		//return t;
	}
};

int main()
{
	Test t;
	t = t.func(t);
}
</code></pre>
<p>Die Ausgabe des Programms sieht bei mir so aus:</p>
<pre><code>Konstruktor: 3215463758
Destruktor: 3215463759
Destruktor: 3215463758
</code></pre>
<p>Kann mir einer erklären warum hier zwei mal der Destruktor ausgeführt wird? Und was ist das für ein Objekt? Es wird dafür ja kein Konstruktor aufgerufen.</p>
<p>Ich danke allen Antwortenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435036</guid><dc:creator><![CDATA[halbermensch]]></dc:creator><pubDate>Fri, 11 Jan 2008 17:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Interresantes verhalten bei fehlendem return. on Fri, 11 Jan 2008 17:54:25 GMT]]></title><description><![CDATA[<p><strong>Undefiniertes Verhalten.</strong> Übrigens in dieser Form durchaus nicht unerwartet - func gibt ein temporäres Objekt zurück, dass am Ende des Ausdrucks, in dem der Funktionsaufruf steht, zerstört werden muss. Für die Konstruktion dieses Objektes ist return zuständig, und das fehlt hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1435044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1435044</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 11 Jan 2008 17:54:25 GMT</pubDate></item></channel></rss>