<?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[Wie wird der return wert übegeben?]]></title><description><![CDATA[<p>Hoi,</p>
<p>ich habe da mal ne Frage.<br />
wir haben folgende Funktion.</p>
<pre><code class="language-cpp">FOO foo(void)
{
    FOO result;
    result=1337;

    return result;    
}
</code></pre>
<p>FOO ist einfah irgeneine Klasse.</p>
<pre><code class="language-cpp">FOO klasse1;
klasse1=foo(); //irgendwo hier wird jetzt der Copy Constructor aufgerufen, aber             
               //wo und warum ??
</code></pre>
<p>Daraus ergibt sich meine zweite Frage.<br />
Wo wird der return Wert hingepackt?</p>
<p>In der Funktion kann er nicht stehen bleiben, da die ja alles wieder freigibt, was sich benutzt hat.<br />
Das heißt in disem Fall wird result nochmal woanders hinkopiert und erst dann klasse1 zugewiesen.</p>
<p>Aber wohin??</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165185/wie-wird-der-return-wert-übegeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 05:43:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165185.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Nov 2006 11:16:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 11:16:56 GMT]]></title><description><![CDATA[<p>Hoi,</p>
<p>ich habe da mal ne Frage.<br />
wir haben folgende Funktion.</p>
<pre><code class="language-cpp">FOO foo(void)
{
    FOO result;
    result=1337;

    return result;    
}
</code></pre>
<p>FOO ist einfah irgeneine Klasse.</p>
<pre><code class="language-cpp">FOO klasse1;
klasse1=foo(); //irgendwo hier wird jetzt der Copy Constructor aufgerufen, aber             
               //wo und warum ??
</code></pre>
<p>Daraus ergibt sich meine zweite Frage.<br />
Wo wird der return Wert hingepackt?</p>
<p>In der Funktion kann er nicht stehen bleiben, da die ja alles wieder freigibt, was sich benutzt hat.<br />
Das heißt in disem Fall wird result nochmal woanders hinkopiert und erst dann klasse1 zugewiesen.</p>
<p>Aber wohin??</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175840</guid><dc:creator><![CDATA[blublubla]]></dc:creator><pubDate>Thu, 16 Nov 2006 11:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 11:22:44 GMT]]></title><description><![CDATA[<p>Beim <code>return result;</code> wird der Inhalt von 'result' in eine temporäre Variable kopiert, die das Ende der Funktion überleben darf - danach wird 'result' entsorgt. Beim <code>klasse1=foo();</code> wird der Inhalt dieser temporären Variable in 'klasse1' kopiert (mittels operator=) - und am Ende der Anweisung wird auch die temporäre Variable wieder entsorgt.</p>
<p>(wobei der Compiler berechtigt ist, das ganze Verfahren zu optimieren)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175846</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 16 Nov 2006 11:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 12:21:34 GMT]]></title><description><![CDATA[<p>Die geläufigste Optimierung macht daraus etwa diesen code</p>
<p>Ohne Optimierung:</p>
<pre><code class="language-cpp">FOO foo(void)
{
    FOO result;
    result=1337;

    return result;    
} 

{...
FOO klasse1 = foo(); 
...}
</code></pre>
<p>Mit Optimierung wird daraus:</p>
<pre><code class="language-cpp">void foo(FOO&amp; ret)
{
ret = 1337;

}
{...
FOO klasse1;
foo(klasse1); 
...}
</code></pre>
<p>Wenn man den orginalcode mit Optimierung mit VS 8.0 übersetzt<br />
Hat man genau einen Konstruktor und einen Destruktoraufruf<br />
ohne Optimierung hat man eine Konstruktor einen CopyKonstruktor und zwei Destruktor aufrufe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175901</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Thu, 16 Nov 2006 12:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 15:26:59 GMT]]></title><description><![CDATA[<p>templäd schrieb:</p>
<blockquote>
<p>Wenn man den orginalcode mit Optimierung mit VS 8.0 übersetzt<br />
Hat man genau einen Konstruktor und einen Destruktoraufruf<br />
ohne Optimierung hat man eine Konstruktor einen CopyKonstruktor und zwei Destruktor aufrufe</p>
</blockquote>
<p>Mit VS 8 kann man den Code optimieren? wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176027</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Thu, 16 Nov 2006 15:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 15:29:05 GMT]]></title><description><![CDATA[<p>Das passiert automatisch, da wird noch viel mehr optimiert beim compilieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176033</guid><dc:creator><![CDATA[Thomas ** 0]]></dc:creator><pubDate>Thu, 16 Nov 2006 15:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie wird der return wert übegeben? on Thu, 16 Nov 2006 15:36:02 GMT]]></title><description><![CDATA[<p>achso ich dachte man kann den quellcode selber richtig rum optimieren, wenn der anwender umständlich geschrieben hat. sowas wie auflösen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176036</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Thu, 16 Nov 2006 15:36:02 GMT</pubDate></item></channel></rss>