<?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[was passiert, wenn man eine referenz auf ein lokales objekt returned?]]></title><description><![CDATA[<p>eine eindeutige antwort habe ich nicht gefunden.</p>
<p>einer meint, das objekt müsse so lange bestehen, wie die referenz selbst. demnach würde das objekt nicht zerstört werden und das wäre konform:</p>
<pre><code class="language-cpp">std::string&amp; func()
{
    std::string test(&quot;test&quot;);
    return test;
}

std::string test = func();
</code></pre>
<p>stimmt es, oder stimmt es nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210594/was-passiert-wenn-man-eine-referenz-auf-ein-lokales-objekt-returned</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 15:45:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210594.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Apr 2008 18:19:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sat, 12 Apr 2008 18:19:53 GMT]]></title><description><![CDATA[<p>eine eindeutige antwort habe ich nicht gefunden.</p>
<p>einer meint, das objekt müsse so lange bestehen, wie die referenz selbst. demnach würde das objekt nicht zerstört werden und das wäre konform:</p>
<pre><code class="language-cpp">std::string&amp; func()
{
    std::string test(&quot;test&quot;);
    return test;
}

std::string test = func();
</code></pre>
<p>stimmt es, oder stimmt es nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1490999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1490999</guid><dc:creator><![CDATA[local ref returner]]></dc:creator><pubDate>Sat, 12 Apr 2008 18:19:53 GMT</pubDate></item><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sat, 12 Apr 2008 18:28:59 GMT]]></title><description><![CDATA[<p>Probiers doch einfach aus.</p>
<p>An sich, solltest du, wenn du soetwas vor hast einfach deine Objekte auf den Heap pushen.<br />
Auf jedenfall sauberer und konform.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1491002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1491002</guid><dc:creator><![CDATA[makkurona]]></dc:creator><pubDate>Sat, 12 Apr 2008 18:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sat, 12 Apr 2008 18:57:07 GMT]]></title><description><![CDATA[<p>Referenzen können nur Lebzeiten von temporären Objekten verlängern, funktioniert also nur mit konstanten Referenzen:</p>
<pre><code class="language-cpp">{
    const std::string&amp; ref = std::string(&quot;Hallo&quot;); // Temporäres Objekt
    // Objekt per Referenz benutzen...
} // &lt;&lt; wird hier mit der Referenz zerstört.
</code></pre>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1491014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1491014</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 12 Apr 2008 18:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sat, 12 Apr 2008 20:03:39 GMT]]></title><description><![CDATA[<p>makkurona schrieb:</p>
<blockquote>
<p>Probiers doch einfach aus....</p>
</blockquote>
<p>Das ist oftmals keine besonders gute Idee, wenn man sich an den Grenzen von &quot;undefiniertem Verhalten&quot; bewegt. ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1491045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1491045</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 12 Apr 2008 20:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sun, 13 Apr 2008 01:34:12 GMT]]></title><description><![CDATA[<p>local ref returner schrieb:</p>
<blockquote>
<p>eine eindeutige antwort habe ich nicht gefunden.</p>
<p>einer meint, das objekt müsse so lange bestehen, wie die referenz selbst. demnach würde das objekt nicht zerstört werden und das wäre konform:</p>
<pre><code class="language-cpp">std::string&amp; func()
{
    std::string test(&quot;test&quot;);
    return test;
}

std::string test = func();
</code></pre>
<p>stimmt es, oder stimmt es nicht?</p>
</blockquote>
<p>nein. Im Allgemeinen ändert das Binden an eine Referenz nichts an der Lebensdauer eines Objektes. Dies ist lediglich anders, wenn ein <em>temporäres</em> Objekt an eine Referenz gebunden wird (da das im Allgemeinen rvalues sind, kommen nur Referenzen auf const in Betracht).<br />
- Ein temporäres Objekt, das im ctor an ein Referenzmember gebunden wird, lebt bis zum Ende des Konstruktors.<br />
- Ein temporäres Objekt, dass an einen Refernzparameter eines Funktionsaufrufes gebunden wird, lebt bis zum Ende des vollständigen Ausdrucks, der den Funktionsaufruf enthält (hier führt es also nicht zu einer anderen Lebensdauer).<br />
- Ein temporäres Objekt, dass an den Rückgabewert einer Funktion, die eine Referenz zurückgibt, gebunden wird, lebt bis zum Ende der Funktion<br />
- In allen anderen Fällen lebt das temporäre Objekt, das an die Referenz gebunden wird, solange wir die Referenz.</p>
<p>In obigem Fall haben wir es gar nicht mit einem temporären Objekt zu tun (und test selbst wird direkt gebunden). In der Funktion wird am Ende ganz normal zerstört, der Rückgabewert verweist anschließend nicht mehr auf ein Objekt: folglich undefiniertes Verhalten bei der Initialisierung von test außerhalb der Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1491152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1491152</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 13 Apr 2008 01:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to was passiert, wenn man eine referenz auf ein lokales objekt returned? on Sun, 13 Apr 2008 04:22:40 GMT]]></title><description><![CDATA[<p>Wenn das gehen sollte, müsste der Compiler das selbstständig so umstellen, dass es auf dem Heap erzeugt wird und das wird er nicht machen. Auf dem Stack kann es ja nicht bleiben, was klar sein sollte, wenn man sich anschaut wie das mit dem Stack funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1491155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1491155</guid><dc:creator><![CDATA[roundman]]></dc:creator><pubDate>Sun, 13 Apr 2008 04:22:40 GMT</pubDate></item></channel></rss>