<?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 Operator=]]></title><description><![CDATA[<p>Also ich habe eine Klasse gebaut die Brüche darstellen soll. Leider habe ich das problem wie kann ich nun den operator= so implementieren das ich soclhe aktionen durchführen kann</p>
<p>bruch = bruch + bruch2;<br />
oder<br />
bruch = bruch - bruch2??</p>
<p>ich weiß ich könnte die += operatoren nehmen, aber nicht jeder verwendet die? Also kann mir da jemand weiter helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212566/frage-zu-operator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 19:31:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212566.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 May 2008 19:14:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 19:14:02 GMT]]></title><description><![CDATA[<p>Also ich habe eine Klasse gebaut die Brüche darstellen soll. Leider habe ich das problem wie kann ich nun den operator= so implementieren das ich soclhe aktionen durchführen kann</p>
<p>bruch = bruch + bruch2;<br />
oder<br />
bruch = bruch - bruch2??</p>
<p>ich weiß ich könnte die += operatoren nehmen, aber nicht jeder verwendet die? Also kann mir da jemand weiter helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505112</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 07 May 2008 19:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 19:18:34 GMT]]></title><description><![CDATA[<p>Hmm. Ich würde mal sagen, dass du den = Operator einfach überlanden kannst.</p>
<p>Jedoch stellt sich die Frage, ob das so sinnvoll ist. Wenn ich jetzt einen Bruch einem anderen ZUWEISEN will, dann passiert nicht das, was ich denke, dass passieren sollte..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505118</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 07 May 2008 19:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 19:20:52 GMT]]></title><description><![CDATA[<p>nur soll ich den operator= dann für 4 sachen überladen? +,-,*,/ oder wie soll ich mir das vorstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505120</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 07 May 2008 19:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 19:27:05 GMT]]></title><description><![CDATA[<p>Du hast ODER geschrieben. <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>
<p>Naja. Ich finde, dass du das überhaupt lassen solltest.<br />
Das was du jetzt gefragt hast ist ja genau das Problem. Wenn du nicht einmal weisst, was der Operator machen soll, wie soll das den der Anwender wissen?</p>
<p>Was ist den nicht gut an den += usw. Operatoren?<br />
Die würden dann ja genau das machen, was ich erwarte.. Wenn ich einen = nehme, dann will ich, dass da nix anderes passiert, als eine Zuweisung.</p>
<p>Ansonsten, wenn du unbedingt darauf beharrst, dann kannst du das mit Elementfunktionen lösen (was du ja bestimmt auch nicht willst) oder auch mittels 4 Überladungen des = Operators, wo du dir hald dann ein Konzept überlegen musst. Irgendwas übergeben zum Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505126</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 07 May 2008 19:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 19:39:56 GMT]]></title><description><![CDATA[<p>Ok drakon du hast recht ich belasse es bei dem += und den zugehörigen die machen ja eigentlich schon das gleiche <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="🙂"
    /> dann kann ich das eigentlich weglachen <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/1505134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505134</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 07 May 2008 19:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 20:44:13 GMT]]></title><description><![CDATA[<p>also:</p>
<p>du überlädst die operatoren '+-*/' so dass sie einen Bruch zurück geben</p>
<pre><code class="language-cpp">Bruch operator+(Bruch const&amp; a)
</code></pre>
<p>nun überladst du '='</p>
<pre><code class="language-cpp">Bruch operator=(Bruch const&amp; value)
{
    //blablabla;
    return (*this);
}
</code></pre>
<p>und schon klappt alles</p>
<p>den '+=' operator kannst du dir zum beispiel für das normale addieren schreiben</p>
<pre><code class="language-cpp">Bruch operator += (Bruch const&amp; a)
{
	this-&gt;addieren(a);
	return *this;
}
</code></pre>
<p>(dieser code stammt aus einem bruchzahl programm von mir...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505171</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 07 May 2008 20:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Wed, 07 May 2008 21:49:43 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Bruch operator+(Bruch const&amp; other)
{
Bruch temp(*this);
temp += other;
return temp;
}
</code></pre>
<p>[edit]<br />
doh, frage lesen ownt, gleich ne erweiterte antwort (dachte geht um operator+, und operator= hast du schon, ich schaus mir nochmal an)</p>
<p>[edit2]<br />
Ok, du implementierst operator+ so wie ich geschrieben hab, operator= so wie skym0sh0 geschrieben hat. :&gt;<br />
Copy-ctor brauchst du bei obigen auch noch, das geht wenn du operator= hast auch ganz einfach so:</p>
<pre><code class="language-cpp">Bruch(Bruch const&amp; other)
{
    *this = other;
}
</code></pre>
<p>Bei nem Bruch sollte operator= wohl in etwa so aussehen (ja ist eigentlich trivial :&gt;):</p>
<pre><code class="language-cpp">Bruch operator=(Bruch const&amp; other)
{
zaehler = other.zaehler;
nenner = other.nenner;
//irgendein böser hack den du in deiner klasse noch ganz dringend brauchst
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1505180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505180</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Wed, 07 May 2008 21:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 06:39:03 GMT]]></title><description><![CDATA[<p>Überall wo *this zurückgegeben wird sollte auch eine Referenz, keine Kopie, zurückgegeben werden:</p>
<pre><code class="language-cpp">Bruch&amp; operator=(Bruch const&amp; value)
{
  // ...

  return *this;
}

Bruch&amp; operator += (Bruch const&amp; a)
{
  // ...

  return *this;
}
</code></pre>
<p>Achja:<br />
Im Kopierkonstruktor verwendet man <em>nicht</em> den Zuweissungsoperator! Nein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505243</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 08 May 2008 06:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 14:01:05 GMT]]></title><description><![CDATA[<p>Hm, das wusst ich nicht. Was für nen Grund gibts denn dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505461</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Thu, 08 May 2008 14:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 14:24:32 GMT]]></title><description><![CDATA[<p>Uchuujinsan schrieb:</p>
<blockquote>
<p>Hm, das wusst ich nicht. Was für nen Grund gibts denn dafür?</p>
</blockquote>
<p>Vorranig spart man unnötige Objektkopien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505484</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 08 May 2008 14:24:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 15:19:08 GMT]]></title><description><![CDATA[<p>Öhm, wo denn?<br />
operator= nimmt doch normalerweise auch ne const referenz?<br />
Die eine Referenz ist doch jetzt nicht der Weltuntergang, vorallem bei nicht zeitkritischen Sachen.<br />
Gewinnen tut man vorallem Wartbarkeit und Übersichtlichkeit (keine code duplikation, änderungen müssen nur 1 mal im operator= gemacht werden), ich dachte wer unbedingt 100% performance will soll C, bzw im C-Stil programmieren.</p>
<p>Es gibt sicher auch Situationen in denen es nicht geht, z.B. wenn (warum auch immer) der copy-ctor was anders machen soll als der zuweisungsoperator, aber im Normalfall ist es die einfachere und übersichtlichere Lösung. Hab ich zunmindest immer geglaubt :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505523</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Thu, 08 May 2008 15:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 18:24:26 GMT]]></title><description><![CDATA[<p>Ach du meinst den assignment operator im copy ctor. Das Problem hierbei ist das einige deiner Member doppelt initialisiert werden. Und das kann mitunter ganz fatale Auswirkungen haben, und nein: da geht es nicht um <em>jedes</em> bisschen Performanz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505616</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 08 May 2008 18:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 21:42:36 GMT]]></title><description><![CDATA[<p>Moment moment:<br />
Initialisierung ist doch immer vor der Ausführung eines Konstruktors - wo sollte dann bei der Ausführung irgendwo noch eine doppelte Initialisierung stattfinden?</p>
<p>Es ist natürlich schon so, wenn z.B. im operator= ein delete auf ein altes array ausgeführt, um danach das neue anzulegen, dann gehts nicht, aber das weiß ich als derjenige der die Klasse schreibt normalerweise selber - ich sehe immer noch nicht ein prinzipielles &quot;dont do this&quot;. Und irgendwelches speichermanagement wird ja wohl bei einer Bruchklasse hoffentlich nicht haben :&gt;<br />
Davon bin ich jedenfalls ausgegangen.<br />
Selbst wenn im Zuweisungsoperator neuer speicher angefordert/alter gelöscht wird, kann man je nachdem wie das geschrieben ist es immer noch so implementieren.</p>
<p>Naja, meine Aussage war wohl etwas zu unüberlegt, hätte vllt noch einschränken sollen dass es nur &quot;wahrscheinlich&quot; geht.</p>
<p>Oder liegt ich immer noch völlig falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505731</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Thu, 08 May 2008 21:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 23:21:43 GMT]]></title><description><![CDATA[<p>Da liegst du falsch! Deine diversen Objekte werden nicht im assignment Operator initialisiert! <em>Richtig</em> initialisiert wird in der Initialisierungsliste. Siehe hierzu auch <a href="http://msdn.microsoft.com/en-us/magazine/cc163742.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/magazine/cc163742.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505755</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 08 May 2008 23:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Thu, 08 May 2008 23:41:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Deine diversen Objekte werden nicht im assignment Operator initialisiert!</p>
</blockquote>
<p>Das hab ich auch nicht behauptet.<br />
Ich habe behauptet die Werte werden vor der Ausführung des ctors initialisiert, mit der default initialisierung, oder eben mit einem speziellen wert wenn für das entsprechende objekt ein eintrag in der Initialisierungsliste besteht.<br />
Aber - in beiden Fällen vor ausführung des ctors, nix andres hab ich gesagt :&gt;</p>
<p>Das einzige was der in dem link anders erzählt ist als ich gedacht hab, dass man eine Variable nochmals initialisiert, ich dachte das würde dann einfach nur zuweisung heißen.</p>
<p>Ich zitiere den Kommentar zum call von operator=:<br />
<strong>This code works fine for many classes</strong></p>
<p>Er ist zwar gegen diese Methode, aber nur aus performancegründen.</p>
<blockquote>
<p>Calling operator= from your copy constructor will certainly work, but it's not the most efficient implementation</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1505757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505757</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Thu, 08 May 2008 23:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Fri, 09 May 2008 07:28:28 GMT]]></title><description><![CDATA[<p>Nix anderes hab ich gesagt! <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="🙂"
    /> Und im Endeffekt kommt es natürlich stark auf den jeweiligen Fall an ob, und welche, Nachteile entstehen. Aber die abwesendheit eines virtuellen Destruktors für Basisklassen funktioniert ja auch für viele Fälle...</p>
<p>Wenn du dir unbedingt teilweise doppelten Code sparen willst dann implementier doch den assignment Operator mithilfe des <em>copy and swap Idioms</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505831</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Fri, 09 May 2008 07:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Fri, 09 May 2008 07:40:35 GMT]]></title><description><![CDATA[<p>ich habe es jetzzt so gemacht wie es am anfang empfohlen wurde, habe einfach nur die += und Kohorten implementiert, machen ja eigentlich nix anderes.Danke trotzdem für eure ausführliche Diskussion, hat mir sehr weitergeholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505853</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Fri, 09 May 2008 07:40:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Operator= on Fri, 09 May 2008 09:42:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22930">@david</a><br />
Ich glaub wir haben uns dann gegenseitig ziemlich mißverstanden ^^<br />
<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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15364">@firefighter</a><br />
sry dass wir ein bißchen OT geworden sind, aber gut dass dir wohl geholfen wurde <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/1505966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505966</guid><dc:creator><![CDATA[Uchuujinsan]]></dc:creator><pubDate>Fri, 09 May 2008 09:42:14 GMT</pubDate></item></channel></rss>