<?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[if (*this != value) vs. if (this != &amp;amp;value)]]></title><description><![CDATA[<p>Hi, schreibt man im operator= eigentlich</p>
<pre><code class="language-cpp">if (*this != value)
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">if (this != &amp;value)
</code></pre>
<p>? Ersteres vergleicht wenn ich das richtig sehe die Objekte miteinander sofern der == bzw. != operator vorhanden ist und letzteres schaut ob die Adresse der Objekte identisch ist?</p>
<pre><code class="language-cpp">MyClass&amp; MyClass::operator=(const MyClass&amp; value)
{
	if (*this != value)
	{
        ...
	}
	return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/303071/if-this-value-vs-if-this-amp-value</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 16:59:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303071.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 May 2012 16:52:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Fri, 04 May 2012 16:53:17 GMT]]></title><description><![CDATA[<p>Hi, schreibt man im operator= eigentlich</p>
<pre><code class="language-cpp">if (*this != value)
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">if (this != &amp;value)
</code></pre>
<p>? Ersteres vergleicht wenn ich das richtig sehe die Objekte miteinander sofern der == bzw. != operator vorhanden ist und letzteres schaut ob die Adresse der Objekte identisch ist?</p>
<pre><code class="language-cpp">MyClass&amp; MyClass::operator=(const MyClass&amp; value)
{
	if (*this != value)
	{
        ...
	}
	return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2208333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208333</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Fri, 04 May 2012 16:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Fri, 04 May 2012 16:57:12 GMT]]></title><description><![CDATA[<p>Weder noch.</p>
<pre><code class="language-cpp">T&amp; operator = (T other)
{
    swap(other);
    return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2208336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208336</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 04 May 2012 16:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Fri, 04 May 2012 17:08:13 GMT]]></title><description><![CDATA[<p>Das nennt man übrigens Copy &amp; Swap Idiom, wenn du das googlen möchtest. 314159265358979s Code ist eine sehr elegante Schreibweise dafür. Die Kopie wird durch die Übergabe des Funktionsparameters &quot;by value&quot; erzeugt, das swap ist dann eine passende Memberfunktion, welche die kritischen (und die unkritischen, aber ohne kritische Ressourcen brauchst du den Operator gar nicht selber zu schreiben) Ressourcen richtig vertauscht. Bei Verlassen der Funktion werden die Ressourcen der Kopie (also die alten Ressourcen wegen dem vorherigen Swap) zerstört. Selbstzuweisung ist kein Problem, da ja nur eine Kopie zerstört wird. Und Exceptionsicher ist es auch noch. Das ist sogar der Hauptzweck des Idioms.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2208340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208340</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 04 May 2012 17:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Sun, 06 May 2012 19:32:52 GMT]]></title><description><![CDATA[<p>Selbstzuweisung ist hier sehr wohl ein Problem — performance..</p>
<blockquote>
<p>Don't pessimize prematurely</p>
</blockquote>
<p><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/2208918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208918</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Sun, 06 May 2012 19:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Sun, 06 May 2012 19:47:11 GMT]]></title><description><![CDATA[<p>Du möchtest bei jeder Zuweisung immer und überall eine Zusatzabfrage einbauen, damit du im Sonderfall, der eigentlich gar nicht vorkommen sollte, dir eine Kopie sparen kannst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2208922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208922</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 06 May 2012 19:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Sun, 06 May 2012 20:58:52 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Du möchtest bei jeder Zuweisung immer und überall eine Zusatzabfrage einbauen, damit du im Sonderfall, der eigentlich gar nicht vorkommen sollte, dir eine Kopie sparen kannst?</p>
</blockquote>
<p>Da ist ja statistisch gesehen die Performance mehr am Leiden, da es mehr kostet 3000 mal unnötig zu prüfen als einmal eine Kopie ein paar Skalarer Datentypen durchzuführen. cmon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2208938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208938</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 May 2012 20:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Sun, 06 May 2012 21:18:37 GMT]]></title><description><![CDATA[<p>Ich denke, das muss man etwas differenzierter sehen. Wenn Kopien teuer sind, kann eine solche Sonderfallabfrage Zeit sparen - etwa wenn das Objekt eine gut gefüllte std::map enthält. Der Standpunkt, dass Selbstzuweisungen nie vorkommen sollten, scheint mir etwas gewagt -- sicher schreibt niemand</p>
<pre><code class="language-cpp">a = a;
</code></pre>
<p>, aber</p>
<pre><code class="language-cpp">*p = *q;
</code></pre>
<p>kann schon mal passieren, auch wenn p und q auf das selbe Objekt zeigen. Es ist ja auch nicht so, dass eine Abfrage die Welt kostet - obwohl wenn ich mir manchmal eine portable Variante von gccs __builtin_expect wünsche.</p>
<p>Was man auch nicht unterschlagen sollte: das Copy&amp;Swap-Idiom ist performancetechnisch dann eine gute Sache, wenn Swaps billig zu haben sind, sonst aber recht teuer. Wenn man seine Datentypen generell verpimplt, mag das trivial erscheinen, aber ich habe auch schon Typen gebaut, die ein paar Kilobyte lokal vorliegen hatten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2208944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2208944</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 06 May 2012 21:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Mon, 07 May 2012 15:53:17 GMT]]></title><description><![CDATA[<p>Ich habe noch nie in einem Code irgendwo eine sinnvolle Situation gehabt wo es zu einer Selbstzuweisung kommen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2209130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2209130</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 07 May 2012 15:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to if (*this != value) vs. if (this != &amp;amp;value) on Mon, 07 May 2012 16:03:53 GMT]]></title><description><![CDATA[<p>Kann ich nur bestätigen. *q = *p scheint mir nicht wirklich plausibel. Normalerweise macht man eine Zuweisung ja aus (sehr) gutem Grund, und nicht einfach wild in der Gegend. Insofern.. ich glaube nicht, dass ich bei mir schon mal irgendwo eine Selbstzuweisung hatte. (Dass man swap nur bevorzugen sollte wenn das auch billig ist, ist natürlich weiter richtig. Und dann (this == &amp;rhs) natürlich, nur weil zwei Objekte einen Wert haben, sind sie ja nicht das selbe Objekt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2209132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2209132</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 May 2012 16:03:53 GMT</pubDate></item></channel></rss>