<?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[Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab eine Frage, hat sich beim Lesen des Buchs &quot;Effektiv C++ programmieren&quot; ergeben:<br />
Bei Tipp 12, &quot;Kopieren Sie alle Teile eines Objekts&quot;, steht geschrieben, dass man vom operator= nicht den Copy CTOR aufrufen soll, und umgekehrt (bei mir [3. Auflage, deutsch] auf Seite 80 unten, bzw. Seite 81 oben).</p>
<p>Mmmmh, ein paar Seiten vorher steht beschrieben, dass man den operator= mit Copy Ctor und swap Funktion realisieren soll.</p>
<p>Jetzt bin ich ehrlich gesagt etwas verwirrt. Wie denn nun?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308262/frage-zu-quot-effektiv-c-programmieren-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 21:59:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308262.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Sep 2012 16:34:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:34:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab eine Frage, hat sich beim Lesen des Buchs &quot;Effektiv C++ programmieren&quot; ergeben:<br />
Bei Tipp 12, &quot;Kopieren Sie alle Teile eines Objekts&quot;, steht geschrieben, dass man vom operator= nicht den Copy CTOR aufrufen soll, und umgekehrt (bei mir [3. Auflage, deutsch] auf Seite 80 unten, bzw. Seite 81 oben).</p>
<p>Mmmmh, ein paar Seiten vorher steht beschrieben, dass man den operator= mit Copy Ctor und swap Funktion realisieren soll.</p>
<p>Jetzt bin ich ehrlich gesagt etwas verwirrt. Wie denn nun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252735</guid><dc:creator><![CDATA[c++ frage]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:40:59 GMT]]></title><description><![CDATA[<p>c++ frage schrieb:</p>
<blockquote>
<p>Mmmmh, ein paar Seiten vorher steht beschrieben, dass man den operator= mit Copy Ctor und swap Funktion realisieren soll.</p>
</blockquote>
<p>Jup, nennt sich copy&amp;swap idiom.</p>
<p>Allerdings ist das definitiv nicht überall sinnvoll. Ich hab das Buch nicht, denke aber, er wird das mit dem nicht-nutzen nicht so pauschal gesagt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252741</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:42:57 GMT]]></title><description><![CDATA[<p>c++ frage schrieb:</p>
<blockquote>
<p>[...] steht geschrieben, dass man vom operator= nicht den Copy CTOR aufrufen soll, und umgekehrt</p>
</blockquote>
<p>In welchem Zusammenhang steht das? Ein spezielles Beispiel?</p>
<p>Normalerweise macht man schon Copy-and-Swap, oder man lässt gleich die compilergenerierten Big Three.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252744</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:47:03 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Normalerweise macht man schon Copy-and-Swap, oder man lässt gleich die compilergenerierten Big Three.</p>
</blockquote>
<p>Sind wir Höhlenmenschen oder was? Wir können doch auch explizit defaulten, wenn wir das nur für die Zuweisungsoperatoren möchten. <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/2252745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252745</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:49:43 GMT]]></title><description><![CDATA[<p>Hier in Grundzügen das zugehörende Beispiel:</p>
<pre><code class="language-cpp">Abgeleitet::Abgeleitet(const Abgeleitet&amp; rhs)
: Basis(rhs),m_ausAbgeleitet(rhs.m_ausAbgeleitet)
{

}

Abgeleitet&amp; Abgeleitet::operator=(const Abgeleitet&amp; rhs)
{
 Basis::operator=(rhs);
 m_ausAbgeleitet=rhs.m_ausAbgeleitet;
 return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2252748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252748</guid><dc:creator><![CDATA[c++ frage]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:50:02 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Normalerweise macht man schon Copy-and-Swap, oder man lässt gleich die compilergenerierten Big Three.</p>
</blockquote>
<p>Sind wir Höhlenmenschen oder was? Wir können doch auch explizit defaulten, wenn wir das nur für die Zuweisungsoperatoren möchten. <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>Ist dir eigentlich schonmal aufgefallen, dass das Forum <strong>C++</strong> <code>(auch C++0x und C++11)</code> heist. Bei deinen Posts denkt man immer, es ginge hier nur um C++11. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252749</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:50:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 16:57:27 GMT]]></title><description><![CDATA[<p>c++ frage schrieb:</p>
<blockquote>
<p>Hier in Grundzügen das zugehörende Beispiel:</p>
<pre><code class="language-cpp">Abgeleitet::Abgeleitet(const Abgeleitet&amp; rhs)
: Basis(rhs),m_ausAbgeleitet(rhs.m_ausAbgeleitet)
{

}

Abgeleitet&amp; Abgeleitet::operator=(const Abgeleitet&amp; rhs)
{
 Basis::operator=(rhs);
 m_ausAbgeleitet=rhs.m_ausAbgeleitet;
 return *this;
}
</code></pre>
</blockquote>
<p>bzw. die Frage:<br />
Wäre es an dieser Stelle falsch, das copy and swap idiom zu verwenden?<br />
Wenn ja, warum?<br />
Wenn nein, auf was könnte der Autor dann hinauswollen? Warum verwendet er im Bsp. im operator= nicht Copy Ctor und swap, so wie er es ein paar Seiten weiter vorne empfohlen hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252751</guid><dc:creator><![CDATA[c++ frage]]></dc:creator><pubDate>Wed, 19 Sep 2012 16:57:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 17:18:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class foo
{
	private:
		int i;
	public:
		foo(const foo&amp; ori)
		{
			this-&gt;operator=(ori); // Das soll man nicht machen, da es unter Umständen das eigene Objekt beschädigt.....
		}
		foo&amp; operator=(const foo&amp; ori)
		{
			this-&gt;i = ori.i;
			return *this;
		}
};

class bar
{
	private:
		int i;
	public:
		bar(const bar&amp; ori)
		{
		}
		bar&amp; operator=(const bar&amp; ori)
		{
			// .....Und anders herum geht es ja erst gar nicht, wie Scott auch gesagt hat:
			// Du kannst hier nicht den Copy-Constructor aufrufen und das eigenen Objekt mit Hilfe des Copy-Constructors auf einen neuen Wert setzen.
			bar(ori); // So geht es nicht, da es dasselbe ist wie bar ori;
			this-&gt;bar(ori); // Und so geht es auch nicht, es macht auch überhaupt gar keinen Sinn.
			                // Wenn du nämlich in einem (Copy-)Constructor landest erstellst du ein neues Objekt.
							// Was ich damit meine ist. Im (Copy-)Constructor ist 'this' nicht mehr 'this' sondern ein neues Objekt.

			return *this;
		}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2252764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252764</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 19 Sep 2012 17:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 17:28:46 GMT]]></title><description><![CDATA[<p>c++ frage schrieb:</p>
<blockquote>
<p>bzw. die Frage:<br />
Wäre es an dieser Stelle falsch, das copy and swap idiom zu verwenden?<br />
Wenn ja, warum?<br />
Wenn nein, auf was könnte der Autor dann hinauswollen? Warum verwendet er im Bsp. im operator= nicht Copy Ctor und swap, so wie er es ein paar Seiten weiter vorne empfohlen hat?</p>
</blockquote>
<p>Wie Scott sagt, solltest du stets Copy&amp;Swap verwenden, demnach ist es natürlich nicht falsch. Du bringst hier zwei Dinge durcheinander, aber ich gebe zu, es ist auch echt doof es richtig zu erklären. Scott will sagen, du sollst operator= und den Ctor nicht implementieren, indem du eine bestimmte Funktion mit dem eigenen Objekt aufrufst (z.B this-&gt;operator=). Das passiert bei Copy&amp;Swap nicht, du rufst hier keine Funktion mit dem eigenen Objekt auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252770</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 19 Sep 2012 17:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Wed, 19 Sep 2012 17:31:02 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Mühe, jetzt ists mir klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252771</guid><dc:creator><![CDATA[c++ frage]]></dc:creator><pubDate>Wed, 19 Sep 2012 17:31:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;Effektiv C++ programmieren&amp;quot; on Thu, 20 Sep 2012 09:25:01 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Sind wir Höhlenmenschen oder was? Wir können doch auch explizit defaulten, wenn wir das nur für die Zuweisungsoperatoren möchten. <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>Lieber <s>Hacker</s>Sone, wir wissen hier alle dass du so <em>unglaublich</em> cool bist, dass du für deine privaten kleinen C++-Spielereien einen modernen Compiler benutzt, der bereits die meisten C++11-Features unterstützt. Dieses Forum ist aber C++ im Allgemeinen gewidmet, speziell auch den Leuten, die in einer Firma arbeiten und deshalb evtl. gezwungen sind, einen Compiler von 2010 oder gar noch früher zu benutzen und dir deshalb wie Höhlenmenschen vorkommen. Tu uns allen den Gefallen und reite nicht ständig darauf herum - du wirkst nicht wie der coole C++-Checker der du gerne sein möchtest sondern wie ein nerviger Teenie.<br />
Oder ums kurz auszudrücken: Halt doch bitte einfach mal den Rand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252921</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 20 Sep 2012 09:25:01 GMT</pubDate></item></channel></rss>