<?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[Warum meckert mein Compil0r nicht?]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">vector &lt;string&gt; v;
const vector &lt;string&gt;&amp; get_vector()
{
	v.push_back(&quot;test&quot;);
	return v;
}

void use_vector()
{
	const vector &lt;string&gt;&amp; a = get_vector();
	vector &lt;string&gt; b = get_vector();
}
</code></pre>
<p>Warum wird Zeile 11 nicht angemeckert? Die Funktion <em>get_vector</em><br />
liefert doch ne const-Referenz, aber Zeile 11 nimmt keine Referenz entgegen sondern kopiert das Objekt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246470/warum-meckert-mein-compil0r-nicht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 21:27:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246470.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jul 2009 18:42:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 18:42:28 GMT]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">vector &lt;string&gt; v;
const vector &lt;string&gt;&amp; get_vector()
{
	v.push_back(&quot;test&quot;);
	return v;
}

void use_vector()
{
	const vector &lt;string&gt;&amp; a = get_vector();
	vector &lt;string&gt; b = get_vector();
}
</code></pre>
<p>Warum wird Zeile 11 nicht angemeckert? Die Funktion <em>get_vector</em><br />
liefert doch ne const-Referenz, aber Zeile 11 nimmt keine Referenz entgegen sondern kopiert das Objekt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751119</guid><dc:creator><![CDATA[vect0r]]></dc:creator><pubDate>Tue, 28 Jul 2009 18:42:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 18:46:33 GMT]]></title><description><![CDATA[<p>Ähm, weil in Zwile 11 keine Referenz zugewiesen sondern der Zuweisungsoperator augerufen wird. Und dieser ist ja bekanntermaßen mit ner constreferenz zufrieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751122</guid><dc:creator><![CDATA[vect0r0r]]></dc:creator><pubDate>Tue, 28 Jul 2009 18:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 18:48:01 GMT]]></title><description><![CDATA[<p>Ja, warum solltest du es nicht kopieren dürfen? Der konstante vector wird dabei ja nicht verändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751125</guid><dc:creator><![CDATA[Kopier0r]]></dc:creator><pubDate>Tue, 28 Jul 2009 18:48:01 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 19:34:03 GMT]]></title><description><![CDATA[<p>vect0r0r schrieb:</p>
<blockquote>
<p>Ähm, weil in Zwile 11 [...] der Zuweisungsoperator augerufen wird.</p>
</blockquote>
<p>Falsch. Setzen. 6.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751161</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 28 Jul 2009 19:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 19:34:26 GMT]]></title><description><![CDATA[<p>Ok!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751162</guid><dc:creator><![CDATA[vect0r]]></dc:creator><pubDate>Tue, 28 Jul 2009 19:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 19:36:34 GMT]]></title><description><![CDATA[<p>Achso, warum, ja weil ich dachte: das was als Type aus einer Funktion rauskommt, muss auch entgegen genommen werden. Aber wenn ich schon denke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751164</guid><dc:creator><![CDATA[vect0r]]></dc:creator><pubDate>Tue, 28 Jul 2009 19:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Tue, 28 Jul 2009 19:46:06 GMT]]></title><description><![CDATA[<p>vect0r schrieb:</p>
<blockquote>
<p>Achso, warum, ja weil ich dachte: das was als Type aus einer Funktion rauskommt, muss auch entgegen genommen werden. Aber wenn ich schon denke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Es wird nicht der Zuweisungsoperator aufgerufen sondern der Kopierkonstruktor.</p>
<p>Grüssli <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/1751170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751170</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 28 Jul 2009 19:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to Warum meckert mein Compil0r nicht? on Sat, 01 Aug 2009 19:05:34 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...<br />
Es wird nicht der Zuweisungsoperator aufgerufen sondern der Kopierkonstruktor.</p>
<p>Grüssli <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>
</blockquote>
<p>Naja - die Kernaussage ist aber schon korrekt, dass die entgegennehmende &quot;Funktion&quot; (sei es nun operator=(), CopyCtor oder irgendetwas Anderes) das Objekt als &quot;unveränderbar&quot; (const-Ref., Kopie, ...)) entgegennimmt - und da der Compiler nichts gegen haben wird.</p>
<p>Wobei es doch eigentlich Probleme geben sollte, wenn der Kopierkonstruktor (was Gott verhindern möge) den übergebenen Parameter veränderte, oder?<br />
std::vector ist natürlich nicht so &quot;kaputt&quot; definiert, aber Folgendes wäre ja schon denkbar:</p>
<pre><code class="language-cpp">struct B {
   B(vector&lt;string&gt;&amp; v);
}

B b = get_vector();
</code></pre>
<p>... und da sollte der Compiler wohl doch was gegen haben, oder?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753687</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 01 Aug 2009 19:05:34 GMT</pubDate></item></channel></rss>