<?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[operator override]]></title><description><![CDATA[<p>Hi everyone</p>
<p>Kann mir jemand ein gutes Code-Beispiel für das Überschreiben des &quot;=&quot;-operators geben? Ich habe eines auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> für den &quot;+&quot;-operator gefunden und es auf &quot;=&quot; übertragen, endet aber in einem Speicherfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<p>Wie sieht also ein Beispiel-Code für diesen override aus <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>
<p>Danke und greeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161268/operator-override</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:59:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161268.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Oct 2006 01:46:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 01:46:43 GMT]]></title><description><![CDATA[<p>Hi everyone</p>
<p>Kann mir jemand ein gutes Code-Beispiel für das Überschreiben des &quot;=&quot;-operators geben? Ich habe eines auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> für den &quot;+&quot;-operator gefunden und es auf &quot;=&quot; übertragen, endet aber in einem Speicherfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<p>Wie sieht also ein Beispiel-Code für diesen override aus <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>
<p>Danke und greeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149610</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Thu, 05 Oct 2006 01:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 05:45:01 GMT]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">class foo
{
public:
	foo &amp;operator=( const foo &amp;other )
	{
		if ( this != &amp;other )
		{
			// mach irgendwas
		}

		return *this;
	}
};
</code></pre>
<p>Wenn du deinen Code noch zeigst könnte man evtl feststellen warum es zu einem Speicherfehler kommt.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149630</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 05 Oct 2006 05:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 14:22:03 GMT]]></title><description><![CDATA[<p>Nun ja, ein Speicherfehler gab es wohl, weil meine Funktion eher so aussah:</p>
<pre><code class="language-cpp">CXmlTag CXmlTag::operator=(CXmlTag m_xtOriginal) {
   CXmlTag xtCopy(&quot;Test&quot;, &quot;Test&quot;);
   xtCopy.set_strName(m_xtOriginal.get_strName());
   xtCopy.set_strValue(m_xtOriginal.get_strValue());
   xtCopy.set_xtParentTag(m_xtOriginal.get_xtParentTag());

   return xtCopy;
}
</code></pre>
<p>Warum muss ich denn mit diesem &quot;&amp;&quot;-Operator arbeiten? Was soll der überhaupt? Ich kenne nur den &quot;*&quot;, welcher definiert, dass z.B. mein Rückgabewert ein Pointer ist.</p>
<p>Und warum muss ich den Wert von this zurückgeben? Muss ich anstatt eines eigenen Objekts (xtCopy) this als Kopie anfertigen?</p>
<p>Thx und greeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149968</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Thu, 05 Oct 2006 14:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 14:33:01 GMT]]></title><description><![CDATA[<p>KessiMC schrieb:</p>
<blockquote>
<p>Warum muss ich denn mit diesem &quot;&amp;&quot;-Operator arbeiten?</p>
</blockquote>
<p>Weil du eine Referenz auf das Ziel-Objekt (this) zurückgeben solltest.</p>
<blockquote>
<p>Was soll der überhaupt?</p>
</blockquote>
<p>In dem Kontext ist es der Referenz-op.</p>
<blockquote>
<p>Und warum muss ich den Wert von this zurückgeben?</p>
</blockquote>
<p>Musst du nicht. macht man aber, dass man z.B.</p>
<pre><code class="language-cpp">a = b = c;
</code></pre>
<p>schreiben kann. Würde dein =op nämlich nichts zurückgeben, würde das nicht klappen.</p>
<blockquote>
<p>Muss ich anstatt eines eigenen Objekts (xtCopy) this als Kopie anfertigen?</p>
</blockquote>
<p>Nein. Du sollst die Daten auf die von m_xtOriginal setzen:</p>
<pre><code class="language-cpp">CXmlTag&amp; CXmlTag::operator=(const CXmlTag &amp;m_xtOriginal) {  //Hier nehmen wir ne konstante Referenz, d.h. Objekt wird nicht kopiert
   //Du kannst hier natürlich direkt auf den Daten arbeiten, aber da ich die Namen dieser nicht kenne, hab ich die Methoden benutzt...
   set_strName(m_xtOriginal.get_strName());
   set_strValue(m_xtOriginal.get_strValue());
   set_xtParentTag(m_xtOriginal.get_xtParentTag());

   return *this;
}
</code></pre>
<p>Das hier:</p>
<p>David_pb schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if ( this != &amp;other )
        {
            // mach irgendwas
        }
</code></pre>
</blockquote>
<p>kann man sich auch sparen, das kostet nur unnötig.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149975</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 05 Oct 2006 14:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 14:38:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Den eigentlichen Teil hat GPC schon gut beantwortet (finde ich), deswegen von mir nur noch 2 Anmerkungen:</p>
<p>KessiMC schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">CXmlTag CXmlTag::operator=(...
</code></pre>
<p>...</p>
</blockquote>
<p>hier nutzt Du implizit den CopyCtor, um ein temporäres CXmlTag-Objekt zu erzeugen:<br />
Der Aufrufer erhält nämlich nicht das lokale Objekt &quot;xtCopy&quot;, sondern nur eine &quot;temporöre Kopie&quot; davon. Wenn Du nun im CopyCtor (evtl. wieder implizit) den operator=() verwendest, bekommst Du eine Endlosschleife und damit einen &quot;Stackoverflow&quot;.</p>
<p>Allgemein: &quot;Eine Referenz (&amp;) ist ein 'verpflichtender Pointer' &quot;<br />
Sie kann also nicht auf 0 zeigen und wenn man kann nicht mehr ändern, worauf sie zeigt. Deswegen gibt es auch kein explizites &quot;Dereferenzieren&quot; wie bei einem Pointer, sondern man arbeitet mit ihr so, wie mit &quot;einem Objekt selbst&quot; (also mit &quot;.&quot; ).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149981</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 05 Oct 2006 14:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 16:47:19 GMT]]></title><description><![CDATA[<p>Hey, danke euch allen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> .</p>
<p>Da hab' ich heut' ja noch richtig 'was gelernt <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="😉"
    /> Und der Speicherfehler erscheint auch nicht mehr <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>
<p>Thx und greeeetz<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150038</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Thu, 05 Oct 2006 16:47:19 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 17:37:45 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Das hier:</p>
<p>David_pb schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if ( this != &amp;other )
        {
            // mach irgendwas
        }
</code></pre>
</blockquote>
<p>kann man sich auch sparen, das kostet nur unnötig.</p>
</blockquote>
<p>Sollte man wenigstens im Debugmodus testen, denn das hat mir schon unnötigen Ärger erspart <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>
<pre><code class="language-cpp">ASSERT(this != &amp;other);
</code></pre>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Allgemein: &quot;Eine Referenz (&amp;) ist ein 'verpflichtender Pointer' &quot;<br />
Sie kann also nicht auf 0 zeigen und wenn man kann nicht mehr ändern, worauf sie zeigt.</p>
</blockquote>
<pre><code class="language-cpp">int&amp; i = *static_cast&lt;int*&gt;(0);
</code></pre>
<p>Er kann auf 0 zeigen, sollte er aber nicht. Ändern kann man Referenzen ebenfalls mit bösen Tricks und Speichereingriffen <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/1150071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150071</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Thu, 05 Oct 2006 17:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Thu, 05 Oct 2006 19:32:10 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>Das hier:</p>
<p>David_pb schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if ( this != &amp;other )
        {
            // mach irgendwas
        }
</code></pre>
</blockquote>
<p>kann man sich auch sparen, das kostet nur unnötig.</p>
</blockquote>
<p>Sollte man wenigstens im Debugmodus testen, denn das hat mir schon unnötigen Ärger erspart <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>
<pre><code class="language-cpp">ASSERT(this != &amp;other);
</code></pre>
</blockquote>
<p>Na ja, zum eimaligen Testen von Selbstzuweisungen vielleicht, aber ansonsten nein. Ein sauber geschriebener =op verkraftet den seltenen Fall, dass mal eine Selbstzuweisung kommt. Wenn man so viele davon hat, dass die Performance leidet, stimmt was am Programm grundsätzlich nicht.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150179</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 05 Oct 2006 19:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Fri, 06 Oct 2006 06:38:20 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">int&amp; i = *static_cast&lt;int*&gt;(0);
</code></pre>
<p>...</p>
</blockquote>
<p>Das war mir sehr wohl bewusst, aber dass man in C++ jedes Bedeutung eines Konstrukts umgehen/mißbrauchen kann, ist weder etwas Neues, noch ändert es etwas an der der Bedeutung.</p>
<p>Oder würdest Du &quot;private&quot; nicht mehr als &quot;Zugriffsschutz&quot; bezeichnen, weil man es ebenfalls umgehen kann ? <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>
<p>Einfaches Gegenbeispiel: Wie würdest Du Dich denn gegen das von Dir skizzierte Verhalten absichern ? :p<br />
Dass es bei einem Pointer eine &quot;==&quot;-Abfrage gibt, drückt seine &quot;Optionalität&quot; aus ... dass es bei Referenzen das gerade nicht gibt, das Gegenteil.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150302</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 06 Oct 2006 06:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Fri, 06 Oct 2006 06:57:59 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ASSERT(this != &amp;other);
</code></pre>
</blockquote>
<p>Was ist an a=a falsch?</p>
<pre><code class="language-cpp">a = besseresDerBeidenObjekte(a,b);
</code></pre>
<p>Bei komplizierten Objekten wäre es schön das per Referenz machen zu können. Da wäre so ein ASSERT absolut fehl am Platze. Selbstzuweisung sollte korrekt gehandhabt werden. Ob es sich aber lohnt es zu optimieren... am einfachsten man implentiert copy&amp;swap und schaut später, ob man was schnelleres braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150315</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 06 Oct 2006 06:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Fri, 06 Oct 2006 10:10:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich weiß nicht, ob es nur mir so geht, aber in meinen Augen ist die Geschichte mit<br />
this != &amp;object hier nicht gut rüber gekommen. Hört sich so an, als ob der Tests grundsätzlich überflüssig wäre. Das ist er aber nur, wenn man den op= auf eine bestimmte Art und Weise implementiert.</p>
<p>Grundsätzlich gilt: wann immer man einen op= implementiert, sollte man auch den Fall Selbstzuweisung im Kopf haben, denn ein a = a ist, wie Jester bereits bemerkte, kein Fehler sondern allenfalls eine Seltenheit.<br />
Fast noch wichtiger ist aber, dass man die Exception-Sicherheit berücksichtigt: wann immer möglich sollte der op= die strong guarantee erfüllen, also entweder der op= läuft komplett ab, oder aber das Originalobjekt bleibt unverändert.</p>
<p>Die Gefahr bei der Selbstzuweisung ist, dass man sich erst das eigene Objekt unterm Hintern weg zerstört und dann versucht von dem nunmehr zerstörten Objekt eine Kopie zu machen. Klassisches Beispiel:</p>
<pre><code class="language-cpp">// KATASTROPHE bei a = a;
String&amp; String::operator=(const String&amp; other) {
  delete [] buffer_;
  buffer_ = new char[other.size_]; 
  copy(buffer_, other.buffer_, other.size_);
  ...
  return *this;
}
</code></pre>
<p>Dieses Problem kann man mit dem Test auf this != &amp;other lösen:</p>
<pre><code class="language-cpp">// Erlaubt auch a = a;
String&amp; String::operator=(const String&amp; other) {
  if (this != &amp;other) {
    delete [] buffer_;
    buffer_ = new char[other.size_]; 
    copy(buffer_, other.buffer_, other.size_);
    ...
  }
  return *this;  
}
</code></pre>
<p>Diese Version ist aber leider nicht Exception-sicher. Sollte z.B. die Allokation fehlschlagen, dann besitzt *this einen undefinierten Wert.</p>
<p>Dieses Problem wiederum löst man, indem man erst alle &quot;gefährlichen&quot; Operationen<br />
auf einer Kopie durchführt und danach die Kopie und *this mit &quot;ungefährlichen&quot; Operationen vertauscht:</p>
<pre><code class="language-cpp">String&amp; String::operator=(const String&amp; other) {
  if (this != &amp;other) {
    // alles was &quot;throwen&quot; kann zuerst.
    char* temp = new char[other.size_];
    // dann vertauschen mit sicheren Operationen
    std::swap(temp_, buffer_);
    copy(temp, other.buffer_, other.size_);
    ...

    delete [] temp;
  }
  return *this;  
}
</code></pre>
<p>Das Interessante: diese Version würde auch ohne Test auf Selbstzuweisung selbige korrekt behandeln. In diesem Fall wird zwar unnötigerweise kopiert, korrekt bleibt das Ergebnis aber.</p>
<pre><code class="language-cpp">String&amp; String::operator=(const String&amp; other) {
  // alles was &quot;throwen&quot; kann zuerst.
  char* temp = new char[other.size_];
  // dann vertauschen mit sicheren Operationen
  std::swap(temp_, buffer_);
  copy(temp, other.buffer_, other.size_);
  ...
  delete [] temp;
  return *this;  
}
</code></pre>
<p>All dies kann man veralgemeinern: der Test auf Selbstzuweisung (this != &amp;other) hilft zwar gut gegegen das &quot;Objekt-unter-Hintern-weg-gelöscht&quot;-Phänomen, für die Exception-Sicherheit ist er allerdings nicht ausreichend. Genauer: ein op=, der auf den Test this != &amp;other *angewiesen* ist, ist niemals Exception-sicher.</p>
<p>Um Exception-sicher zu sein, muss ein Operator= erst alle Operationen die eine Exception werfen könnten auf einer Kopie durchführen und dann Kopie und Original mit Operationen vertauschen, die keine Exceptions werfen können.</p>
<p>Zur Erinnerung: die kanonische Form des op=, und damit das von Jester angesprochene Copy&amp;Swap-Idiom, die sowohl Selbstzuweisung korrekt behandelt als auch Exception-sicher ist, sieht so aus:</p>
<pre><code class="language-cpp">Class&amp; Class::operator=(const Class&amp; other) {
   Class temp(other);
   Swap(temp);  // vertauscht den Zustand von *this und temp unter 
                // Verwendung von non-throwing-Operationen
   return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1150451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150451</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 06 Oct 2006 10:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to operator override on Fri, 06 Oct 2006 20:22:34 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Neku schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">int&amp; i = *static_cast&lt;int*&gt;(0);
</code></pre>
<p>...</p>
</blockquote>
<p>Oder würdest Du &quot;private&quot; nicht mehr als &quot;Zugriffsschutz&quot; bezeichnen, weil man es ebenfalls umgehen kann ? <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>
<p>Einfaches Gegenbeispiel: Wie würdest Du Dich denn gegen das von Dir skizzierte Verhalten absichern ? :p</p>
</blockquote>
<p>'private' sehe ich lediglich als Hilfe, nicht als Schutz.</p>
<p>Gegen das obige Verhalten würde ich gar nichts tun. Wenn ich mit Referenzen arbeite, dann heißt das für mich, dass der Erzeuger der Referenz für die Gültigkeit sorgen muss. Mir ging es nur darum, dass eine Referenz auf 0 zeigen kann (aber nicht im Sinne von 'darf' - undefiniertes Verhalten ;))</p>
<p>Jester schrieb:</p>
<blockquote>
<p>Neku schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ASSERT(this != &amp;other);
</code></pre>
</blockquote>
<p>Was ist an a=a falsch?</p>
</blockquote>
<p>Es ist nicht falsch. Es wird nur darauf hingeweisen wenn der Fall eintritt.<br />
Ich habe schon mehrfach das Problem gehabt, dass ein Bug irgendwo im Programmlauf aufgetreten ist, der (wie ich erst nach mehreren Stunden Arbeit herausgefunden habe) lediglich auf eine versehentliche Selbstzuweisung zurückzuführen war. Ich habe mir daher angewöhnt, bei den meisten Zuweisungsoperatorüberladungen solch ein Assert einzubauen. Bei einer versehentlichen Selbstzuweisug werde ich gewarnt, bei einer absichtlichen und erlaubten kann ich die Warnung entfernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150828</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 06 Oct 2006 20:22:34 GMT</pubDate></item></channel></rss>