<?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[Übergabe als Wert]]></title><description><![CDATA[<p>Wenn ich einer Funktion ein Objekt als Wert übergebe dann wird doch innerhalb dieser Funktion mit einer Kopie dieses Objektes gearbeitet und nicht mit dem Original. Das heißt nach dem verlassen der Funktion wird dieses Objekt doch auch wieder zerstört (der Destruktor aufgerufen). Mal angenommen die Funktion hat einen Rückgabetyp vom Typ des übergebenen Objektes und ich gebe das gleiche Objekt auch wieder zurück. Warum kann ich ein Objekt was doch eigentlich beim verlassen der Funktion zerstört wird trotzdem zurückgeben und im Aufrufer damit weiterarbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117929/übergabe-als-wert</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 05:21:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117929.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Aug 2005 15:43:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 15:43:25 GMT]]></title><description><![CDATA[<p>Wenn ich einer Funktion ein Objekt als Wert übergebe dann wird doch innerhalb dieser Funktion mit einer Kopie dieses Objektes gearbeitet und nicht mit dem Original. Das heißt nach dem verlassen der Funktion wird dieses Objekt doch auch wieder zerstört (der Destruktor aufgerufen). Mal angenommen die Funktion hat einen Rückgabetyp vom Typ des übergebenen Objektes und ich gebe das gleiche Objekt auch wieder zurück. Warum kann ich ein Objekt was doch eigentlich beim verlassen der Funktion zerstört wird trotzdem zurückgeben und im Aufrufer damit weiterarbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851031</guid><dc:creator><![CDATA[Wernus]]></dc:creator><pubDate>Fri, 12 Aug 2005 15:43:25 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 15:45:27 GMT]]></title><description><![CDATA[<p>der rückgabewert ist <strong>wieder</strong> eine Kopie!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851033</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 12 Aug 2005 15:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 15:47:12 GMT]]></title><description><![CDATA[<p>wird diese Kopie dann zerstört wenn der Aufrufer beendet wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851035</guid><dc:creator><![CDATA[Wernus]]></dc:creator><pubDate>Fri, 12 Aug 2005 15:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 15:49:27 GMT]]></title><description><![CDATA[<p>Das Objekt wird mit Hilfe des Copy-Constructors kopiert - einmal beim Übergeben an die Funktion und einmal beim Zurückgeben. Sehr deutlich wird das mit solchen Tests:</p>
<pre><code class="language-cpp">class Test
{
    static int num;
    int myNum;

    public:
        Test ()
            :
        myNum(++num)
        {
            cout &lt;&lt; &quot;Construction of &quot; &lt;&lt; myNum &lt;&lt; endl;
        }
        Test (const Test&amp; rhs)
        {
            myNum = ++num;
            cout &lt;&lt; &quot;Copy of &quot; &lt;&lt; rhs.myNum &lt;&lt; &quot; to &quot; &lt;&lt; myNum &lt;&lt; endl;
        }
        ~Test ()
        {
            cout &lt;&lt; &quot;Destruction of &quot; &lt;&lt; myNum &lt;&lt; endl;
        }
};

int Test::num = 0;

Test myFunc (Test obj)
{
    obj.doSomething();
    return obj;
}

...

{
    Test a;
    Test b = myFunc(a);
}
</code></pre>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851037</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 12 Aug 2005 15:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 15:50:32 GMT]]></title><description><![CDATA[<p>Wernus schrieb:</p>
<blockquote>
<p>wird diese Kopie dann zerstört wenn der Aufrufer beendet wird?</p>
</blockquote>
<p>Ja, wenn sein Scope zu Ende ist.</p>
<pre><code class="language-cpp">{
    Test a; 
    Test b = myFunc(a);
}// Hier werden a und b zerstört
</code></pre>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851040</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 12 Aug 2005 15:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 16:59:59 GMT]]></title><description><![CDATA[<p>in diesem Fall müssten insgesamt 4 Objekte erstellt werden:</p>
<p>1)a<br />
2)b<br />
3)der parameter von Func (wird beim Verlassen von Func zerstört)<br />
4)ein Temporäres Objekt als Rückgabewert von Func (Wird nach der Übergabe an b zerstört)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851076</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 12 Aug 2005 16:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 17:04:47 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>in diesem Fall müssten insgesamt 4 Objekte erstellt werden:</p>
<p>4)ein Temporäres Objekt als Rückgabewert von Func (Wird nach der Übergabe an b zerstört)</p>
</blockquote>
<p>Wird das Temponäre Objekt nun nach der Übergabe an b zerstört oder nach dem Funktionsende?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851083</guid><dc:creator><![CDATA[Wernus]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe als Wert on Fri, 12 Aug 2005 17:40:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nach der übergabe an b sonst würden rückgabewerte by-value keinen sinn machen, weil man sie eh nicht zuweisen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851107</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:40:25 GMT</pubDate></item></channel></rss>