<?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-Semantics in Parameter-Liste]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Frage bzgl. Move-Semantics ich habe bis jetzt nicht das Gefühl, dass ich bei der Thematik wirklich mit beiden Beinen auf dem Boden stehe.</p>
<p>Bis jetzt habe ich Parameter an Konstruktoren meistens als const reference übergeben und diese dann per Init-Liste kopiert, wenn die Variable die ich übergeben will nicht mehr existiert.</p>
<p>Siehe:</p>
<pre><code>#include &lt;string&gt;
using namespace std;

class Test{
public:
Test(const string &amp; value) : key_(value)  {}

private:
string key_;

};
int main()
{
string alpha = &quot;alpha&quot;;

Test foo(alpha);
return 0;
}
</code></pre>
<p>Mit der neuen Move-Semantik wollte ich das jetzt verändern und bin mir aber unschlüssig ob ich das korrekt anwende.</p>
<p>Hier mein Code:</p>
<pre><code>class Test{
public:
Test(string &amp;&amp; value) : key_(value) {}

private:
string key_;

};
int main()
{
string alpha = &quot;alpha&quot;;

Test foo(std::move(alpha));
return 0;
}
</code></pre>
<p>Ist dieser Abschnitt richtig oder muss ich nochmal in der Initialisierungsliste mit std::move auf rvalue casten?</p>
<p>Also:</p>
<pre><code>Test(string &amp;&amp; value) : key_(std::move(value)) {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/329044/move-semantics-in-parameter-liste</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 02:31:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329044.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Nov 2014 09:45:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Move-Semantics in Parameter-Liste on Wed, 05 Nov 2014 10:54:12 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Frage bzgl. Move-Semantics ich habe bis jetzt nicht das Gefühl, dass ich bei der Thematik wirklich mit beiden Beinen auf dem Boden stehe.</p>
<p>Bis jetzt habe ich Parameter an Konstruktoren meistens als const reference übergeben und diese dann per Init-Liste kopiert, wenn die Variable die ich übergeben will nicht mehr existiert.</p>
<p>Siehe:</p>
<pre><code>#include &lt;string&gt;
using namespace std;

class Test{
public:
Test(const string &amp; value) : key_(value)  {}

private:
string key_;

};
int main()
{
string alpha = &quot;alpha&quot;;

Test foo(alpha);
return 0;
}
</code></pre>
<p>Mit der neuen Move-Semantik wollte ich das jetzt verändern und bin mir aber unschlüssig ob ich das korrekt anwende.</p>
<p>Hier mein Code:</p>
<pre><code>class Test{
public:
Test(string &amp;&amp; value) : key_(value) {}

private:
string key_;

};
int main()
{
string alpha = &quot;alpha&quot;;

Test foo(std::move(alpha));
return 0;
}
</code></pre>
<p>Ist dieser Abschnitt richtig oder muss ich nochmal in der Initialisierungsliste mit std::move auf rvalue casten?</p>
<p>Also:</p>
<pre><code>Test(string &amp;&amp; value) : key_(std::move(value)) {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2425942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425942</guid><dc:creator><![CDATA[chp++]]></dc:creator><pubDate>Wed, 05 Nov 2014 10:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to Move-Semantics in Parameter-Liste on Wed, 05 Nov 2014 09:51:20 GMT]]></title><description><![CDATA[<p>Du willst doch sowohl lvalues als auch rvalues nehmen koennen?<br />
Dann schreib'</p>
<pre><code>Test(string value) : key_(std::move(value))  {}
</code></pre>
<blockquote>
<p>Ist dieser Abschnitt richtig oder muss ich nochmal in der Initialisierungsliste mit <code>std::move</code> auf rvalue casten?</p>
</blockquote>
<p>Ja, du muesstest noch einmal auf ein rvalue casten. Der Name einer rvalue Referenz ist ein lvalue. (Generell ist jeder Name ein lvalue)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425944</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 05 Nov 2014 09:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to Move-Semantics in Parameter-Liste on Wed, 05 Nov 2014 09:51:04 GMT]]></title><description><![CDATA[<p>Du brauchst nocheinmal move, da der Parameter einen Namen hat und deswegen und ein LValue ist.<br />
Außerdem funktioniert deine Variante nicht mehr mit LValues, dafür brauchst du beide. Um das zu sparen, kannst du auch by-Value übergeben und den Parameter dann moven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425945</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 05 Nov 2014 09:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Move-Semantics in Parameter-Liste on Wed, 05 Nov 2014 09:54:02 GMT]]></title><description><![CDATA[<p>chp++ schrieb:</p>
<blockquote>
<p>muss ich nochmal in der Initialisierungsliste mit std::move auf rvalue casten?</p>
<p>Also:</p>
<pre><code>Test(string &amp;&amp; value) : key_(std::move(value)) {}
</code></pre>
</blockquote>
<p>ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425948</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 05 Nov 2014 09:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Move-Semantics in Parameter-Liste on Wed, 05 Nov 2014 15:38:42 GMT]]></title><description><![CDATA[<p>Ok, danke.</p>
<p>Ich wollte eigentlich nur lvalues zulassen damit ich nicht ausversehen ein std::move beim Konstruktor aufruf vergesse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426013</guid><dc:creator><![CDATA[chp++]]></dc:creator><pubDate>Wed, 05 Nov 2014 15:38:42 GMT</pubDate></item></channel></rss>