<?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[Move Semantik vs. Call by Reference]]></title><description><![CDATA[<p>Hallo ihr Lieben,</p>
<p>ich habe mal wieder eine naive Frage: Wie der Titel schon andeutet, was genau ist der Unterschied zwischen (seit C++11) <code>std::move</code> und (dem guten alten?) call by reference?</p>
<p>Ich habe die naive Ansicht, dass in beiden Fällen das Kopieren umgangen werden möchte, was bei großen Datenmengen (lange Vektoren?) sehr lange dauern kann. Aber das erreiche ich doch auch durch ein einfaches Call by Reference.</p>
<p>Kann es an dem Wunsch der Ressourcenverwaltung liegen? Denn durch ein <code>std::move</code> geht der Vektor tatsächlich an das aufrufende Objekt über, d.h. wenn z.B. eine Funktion den Vektor mitels <code>std::move</code> bekommt, die Funktion fertig ist ... dann wäre auch der Vektor weg.</p>
<p>Durch Call by Reference wäre die Funktion nur in der Lage Änderungen am Vektor vorzunehmen, 'die bleiben'.</p>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323384/move-semantik-vs-call-by-reference</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 03:42:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323384.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jan 2014 09:17:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Move Semantik vs. Call by Reference on Tue, 28 Jan 2014 09:17:45 GMT]]></title><description><![CDATA[<p>Hallo ihr Lieben,</p>
<p>ich habe mal wieder eine naive Frage: Wie der Titel schon andeutet, was genau ist der Unterschied zwischen (seit C++11) <code>std::move</code> und (dem guten alten?) call by reference?</p>
<p>Ich habe die naive Ansicht, dass in beiden Fällen das Kopieren umgangen werden möchte, was bei großen Datenmengen (lange Vektoren?) sehr lange dauern kann. Aber das erreiche ich doch auch durch ein einfaches Call by Reference.</p>
<p>Kann es an dem Wunsch der Ressourcenverwaltung liegen? Denn durch ein <code>std::move</code> geht der Vektor tatsächlich an das aufrufende Objekt über, d.h. wenn z.B. eine Funktion den Vektor mitels <code>std::move</code> bekommt, die Funktion fertig ist ... dann wäre auch der Vektor weg.</p>
<p>Durch Call by Reference wäre die Funktion nur in der Lage Änderungen am Vektor vorzunehmen, 'die bleiben'.</p>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380090</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Tue, 28 Jan 2014 09:17:45 GMT</pubDate></item><item><title><![CDATA[Reply to Move Semantik vs. Call by Reference on Tue, 28 Jan 2014 09:40:26 GMT]]></title><description><![CDATA[<p>Mit Move-Semantik überträgst du den Besitz, (LValue-)Referenzen sind hingegen nur passive Verweise, die nichts an den Besitzverhältnissen ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380101</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 28 Jan 2014 09:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to Move Semantik vs. Call by Reference on Tue, 28 Jan 2014 09:55:37 GMT]]></title><description><![CDATA[<p>Alte Verhaltensweise:</p>
<pre><code>string foo()
foo.push_back(getString());
</code></pre>
<p>Alte Verhaltensweise:<br />
getString gibt einen String (temporär) zurück. push_back nimmt diesen String als als konstante Referenz (hier keine Kopie) und <strong>kopiert</strong> ihn an die richtige Stelle. Dann wird das temporäre Objekt gelöscht.</p>
<p>Neue Verhaltensweise:<br />
getString gibt einen String (temporär) zurück. push_back nimmt diesen String als RValue-Reference (hier keine Kopie) und <strong>verschiebt</strong> die Daten an die richtige Stelle. Das temporäre Objekt wird gelöscht, hat aber gar keine Daten mehr.</p>
<p>Beim ersten wird das Objekt vom Aufruf nicht kopiert, aber beim Einfügen, auch dann wenn man es ohnehin nicht mehr braucht. Beim zweiten findet diese Kopie nur statt, wenn es wirklich nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380104</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Tue, 28 Jan 2014 09:55:37 GMT</pubDate></item></channel></rss>