<?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[Kopierinitialisierung]]></title><description><![CDATA[<p>Da ich es immer noch nicht gaz verstehe: was passiert bei einer Kopierinitialisierung oder wann findet diese genau statt?</p>
<p>Wenn ich eine Klasse Car habe, in der Konstruktor, Kopierkonstruktor und Zuweisungsoperator selbst definiert sind, was passiert dann in diesen Fällen?</p>
<pre><code class="language-cpp">Car x();   // Einfach der Konstruktor?
Car y(x);  // Kopierkonstruktor?
Car z = y; // Kopierkonstruktor?
z = x;     // Zuweisung?
</code></pre>
<p>Gibt es irgendetwas zu beachten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/263487/kopierinitialisierung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 19:26:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/263487.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Mar 2010 18:47:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 18:47:23 GMT]]></title><description><![CDATA[<p>Da ich es immer noch nicht gaz verstehe: was passiert bei einer Kopierinitialisierung oder wann findet diese genau statt?</p>
<p>Wenn ich eine Klasse Car habe, in der Konstruktor, Kopierkonstruktor und Zuweisungsoperator selbst definiert sind, was passiert dann in diesen Fällen?</p>
<pre><code class="language-cpp">Car x();   // Einfach der Konstruktor?
Car y(x);  // Kopierkonstruktor?
Car z = y; // Kopierkonstruktor?
z = x;     // Zuweisung?
</code></pre>
<p>Gibt es irgendetwas zu beachten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872176</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Sun, 21 Mar 2010 18:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 18:51:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Car x; // Default constructor
Car y(x); // Copy constructor
Car z = x; // Copy constructor
z = y; // Assign operator

Car x (); // Function declaration
Car x (5); // Constructor call
</code></pre>
<p>BTW: Einfach eine kleine Klasse bauen die in den einzelnen Konstruktoren/Operatoren immer via cout eine Meldung ausgibt.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872178</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sun, 21 Mar 2010 18:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 18:53:14 GMT]]></title><description><![CDATA[<p>Und immer brav die Regel Der-Großen-Drei beachten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872179</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 21 Mar 2010 18:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 19:02:22 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Und immer brav die Regel Der-Großen-Drei beachten...</p>
</blockquote>
<p>...und generell sich mit allen Beiträgen hier: <a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs</a> beschäftigen.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872184</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sun, 21 Mar 2010 19:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 19:21:18 GMT]]></title><description><![CDATA[<p><strong>Frage:</strong></p>
<pre><code class="language-cpp">Car z = x; // Copy constructor
</code></pre>
<p>Ist es wirklich sicher (standard !) das in diesem Fall der Copy-Constructor aufgerufen wird, und nicht zuerst der Default-Contructor mit anschließender Zuweisung ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872193</guid><dc:creator><![CDATA[Chew-Z]]></dc:creator><pubDate>Sun, 21 Mar 2010 19:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 19:33:43 GMT]]></title><description><![CDATA[<p>Chew-Z schrieb:</p>
<blockquote>
<p>Ist es wirklich sicher (standard !) das in diesem Fall der Copy-Constructor aufgerufen wird, und nicht zuerst der Default-Contructor mit anschließender Zuweisung ??</p>
</blockquote>
<p>Ja, sofern die Typen gleich sind und es sich bei <code>x</code> nicht um ein temporäres Objekt handelt.</p>
<p>Falls <code>z</code> und <code>x</code> unterschiedliche Typen haben, darf entweder der Konvertierungskonstruktor und dann der Kopierkonstruktor aufgerufen werden (1) oder direkt der Konvertierungskonstruktor (2).</p>
<pre><code class="language-cpp">Car tmp(x); // (1) Konvertierungskonstruktor
Car z(tmp); //     Kopierkonstruktor

Car z(x);   // (2) Konvertierungskonstruktor
</code></pre>
<p>Wenn hingegen <code>x</code> ein temporäres Objekt ist (beispielsweise ein Rückgabewert einer Funktion), darf <code>z</code> direkt initialisiert werden, ohne dass ein Kopierkonstruktor aufgerufen wird. Die Kopie wird also wegoptimiert.</p>
<p>Standardkonstruktor und Zuweisungsoperator werden in diesem Kontext aber nie aufgerufen. Daher müssen sie auch nicht öffentlich zugreifbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872196</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 21 Mar 2010 19:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 19:38:10 GMT]]></title><description><![CDATA[<p>Das dies Sinn macht sehe ich ein. Aber ist dies eine Eigenschaft (heutiger) Compiler oder ist dieses durch den Standard so vorgegeben ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872201</guid><dc:creator><![CDATA[Chew-Z]]></dc:creator><pubDate>Sun, 21 Mar 2010 19:38:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 19:52:30 GMT]]></title><description><![CDATA[<p>Chew-Z schrieb:</p>
<blockquote>
<p>Das dies Sinn macht sehe ich ein. Aber ist dies eine Eigenschaft (heutiger) Compiler oder ist dieses durch den Standard so vorgegeben ??</p>
</blockquote>
<p>C++ Standard 8.5.11 schrieb:</p>
<blockquote>
<p>The form of initialization (using parentheses or <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="🙂"
    /> <strong>is generally insignificant</strong>, but does matter when the entity being initialized has a class type; see below. A parenthesized initializer can be a list of expressions only when the entity being initialized has a class type.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1872207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872207</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 21 Mar 2010 19:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierinitialisierung on Sun, 21 Mar 2010 20:04:39 GMT]]></title><description><![CDATA[<p>Chew-Z schrieb:</p>
<blockquote>
<p>Das dies Sinn macht sehe ich ein. Aber ist dies eine Eigenschaft (heutiger) Compiler oder ist dieses durch den Standard so vorgegeben ??</p>
</blockquote>
<p>Der Standard macht Vorgaben. Gewisse davon sind &quot;implementation-defined&quot;, also den Compilerherstellern überlassen. Zum Beispiel betrifft das die oben erwähnten Varianten (1) und (2).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1872211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1872211</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 21 Mar 2010 20:04:39 GMT</pubDate></item></channel></rss>