<?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[In einem Kopierkonstruktur etwas anderes tun als kopieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Beispiel:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class Demo {

public:

	Demo() {
		ch = 'D';
	}
	;
	Demo(const Demo&amp; dr) {
		ch = 'X';
	}
	char ch;
};

int main() {
	Demo d1;
	Demo d2 = d1;
	cout &lt;&lt; d1.ch &lt;&lt; endl;
	cout &lt;&lt; d2.ch &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Warum ist es gefährlich in einem Kopierkonstruktor etwas anderes zu tun als zu kopieren? Gibt es dafür ein Beispiel?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327005/in-einem-kopierkonstruktur-etwas-anderes-tun-als-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:20:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327005.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Jul 2014 22:02:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 22:02:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Beispiel:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class Demo {

public:

	Demo() {
		ch = 'D';
	}
	;
	Demo(const Demo&amp; dr) {
		ch = 'X';
	}
	char ch;
};

int main() {
	Demo d1;
	Demo d2 = d1;
	cout &lt;&lt; d1.ch &lt;&lt; endl;
	cout &lt;&lt; d2.ch &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>Warum ist es gefährlich in einem Kopierkonstruktor etwas anderes zu tun als zu kopieren? Gibt es dafür ein Beispiel?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409335</guid><dc:creator><![CDATA[gregg]]></dc:creator><pubDate>Fri, 18 Jul 2014 22:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 22:03:56 GMT]]></title><description><![CDATA[<p>Finde ich gut so!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409336</guid><dc:creator><![CDATA[JulianH]]></dc:creator><pubDate>Fri, 18 Jul 2014 22:03:56 GMT</pubDate></item><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 22:09:09 GMT]]></title><description><![CDATA[<p>Es widerspricht nunmal der Intuition. Etwas &quot;Gefährliches&quot; (was ist überhaupt gefährlich beim Hobby-Programmieren am PC?) fällt mir nicht ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409338</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Fri, 18 Jul 2014 22:09:09 GMT</pubDate></item><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 22:30:44 GMT]]></title><description><![CDATA[<p>gregg schrieb:</p>
<blockquote>
<p>Warum ist es gefährlich in einem Kopierkonstruktor etwas anderes zu tun als zu kopieren? Gibt es dafür ein Beispiel?</p>
</blockquote>
<p>Weil der Kopierkonstruktor vom Compiler an vielen Stellen automatisch aufgerufen wird, wenn eben etwas kopiert werden soll.<br />
Und es gibt sogar extra Stellen im Standard die es dem Compiler *erlauben* den Aufruf des Kopierkonstruktor in bestimmten Situationen wegzulassen.<br />
D.h. er kann den Kopierkonstruktor aufrufen, muss aber nicht.</p>
<p>Suchbegriffe: &quot;RVO&quot;, &quot;NRVO&quot; und &quot;copy elision&quot;.</p>
<p>Und wenn das Verhalten deines Programms sich durch etwas ändert, was der Compiler eben so oder so machen darf, dann ist es offensichtlich ein schlechtes Programm.</p>
<p>Und deswegen macht man das nicht.</p>
<p>Und natürlich weil es total kontraintuitiv ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409340</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 18 Jul 2014 22:30:44 GMT</pubDate></item><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 23:06:46 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>gregg schrieb:</p>
<blockquote>
<p>Warum ist es gefährlich in einem Kopierkonstruktor etwas anderes zu tun als zu kopieren? Gibt es dafür ein Beispiel?</p>
</blockquote>
<p>Weil der Kopierkonstruktor vom Compiler an vielen Stellen automatisch aufgerufen wird, wenn eben etwas kopiert werden soll.<br />
Und es gibt sogar extra Stellen im Standard die es dem Compiler *erlauben* den Aufruf des Kopierkonstruktor in bestimmten Situationen wegzulassen.<br />
D.h. er kann den Kopierkonstruktor aufrufen, muss aber nicht.</p>
<p>Suchbegriffe: &quot;RVO&quot;, &quot;NRVO&quot; und &quot;copy elision&quot;.</p>
<p>Und wenn das Verhalten deines Programms sich durch etwas ändert, was der Compiler eben so oder so machen darf, dann ist es offensichtlich ein schlechtes Programm.</p>
<p>Und deswegen macht man das nicht.</p>
<p>Und natürlich weil es total kontraintuitiv ist.</p>
</blockquote>
<p>Vielen Dank! Deine Beiträge sind Top! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409343</guid><dc:creator><![CDATA[gregg]]></dc:creator><pubDate>Fri, 18 Jul 2014 23:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to In einem Kopierkonstruktur etwas anderes tun als kopieren on Fri, 18 Jul 2014 23:47:07 GMT]]></title><description><![CDATA[<p>Huch. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409350</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 18 Jul 2014 23:47:07 GMT</pubDate></item></channel></rss>