<?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[Operatoren überladen]]></title><description><![CDATA[<p>Hallo.</p>
<p>WOZU überlädt man Operatoren?</p>
<p>Ich habe im Studium folgende Aufgabe bekommen:<br />
Ein Programm erstellen für eine Klasse Vektor - für 2dimensionale Vektoren und soll die Operatoren &quot;+&quot; und &quot;-&quot; überladen.</p>
<p>Hey, ich programmiere liebend gerne in Java <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> aber jetzt das... <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>
<p>Habt ihr Beispiele, die einfach sind ... Will das verstehen.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159503/operatoren-überladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 17:03:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159503.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Sep 2006 19:34:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 19:34:02 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>WOZU überlädt man Operatoren?</p>
<p>Ich habe im Studium folgende Aufgabe bekommen:<br />
Ein Programm erstellen für eine Klasse Vektor - für 2dimensionale Vektoren und soll die Operatoren &quot;+&quot; und &quot;-&quot; überladen.</p>
<p>Hey, ich programmiere liebend gerne in Java <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> aber jetzt das... <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>
<p>Habt ihr Beispiele, die einfach sind ... Will das verstehen.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138155</guid><dc:creator><![CDATA[O-ta]]></dc:creator><pubDate>Fri, 15 Sep 2006 19:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 20:21:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &quot;Vektor.h&quot;

using namespace std; 
int main() 
{ 				

Vektor rep1 ;
rep1.setCordinates(2,2);
Vektor rep2;
rep2.setCordinates(2,2);

Vektor rep3;

rep3 = rep1+rep2;

cout &lt;&lt; rep3.getX();

cin.ignore();

return 0;
}
</code></pre>
<p>ausgabe: - wie zu erwarten 4</p>
<p>header:</p>
<pre><code class="language-cpp">#pragma once

class Vektor
	{
	public:

		Vektor(void)
			{
			}

		~Vektor(void)
			{
			}

		void setCordinates (double x, double y){

			_x  = x;
			_y  = y;
			}
	double getX(){
		return _x;
		}

	double getY(){
		return _y;
	}
	Vektor operator + ( Vektor a){
		Vektor c;

		_x = a.getX() + _x;
		_y = _y + a.getY();
		return *this;
	}
	private:

		double _x;
		double _y;

	};
</code></pre>
<p>ich habe das mal geschrieben, weil wir gerade mit analytischer geometrie angefangen haben, da ist das nochmal ne gute übung<br />
wie der - operator funktioniert kann man sich ja dann denken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138178</guid><dc:creator><![CDATA[golden_jubilee]]></dc:creator><pubDate>Fri, 15 Sep 2006 20:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 20:40:17 GMT]]></title><description><![CDATA[<p>Ne! Sorry, aber der operator+ ist kompletter Blödsinn. Du veränderst damit ja einen der beiden Summanden. Außerdem sollte operator+ immer eine freie Funktion sein, z.B. so:</p>
<pre><code class="language-cpp">Vector operator+ (const Vector&amp; Left, const Vector&amp; Right)
{
    return Vector (Left.getX()+Right.getX(), Left.getY()+Right.getY());
}
</code></pre>
<p>Damit das funktioniert, muß Vector noch um einen weiteren Konstruktor ergänzt werden, der x und y übergeben bekommt. Und die getX() und getY() Funktionen müssen const sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138194</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 15 Sep 2006 20:40:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 21:09:56 GMT]]></title><description><![CDATA[<p>Z2 schrieb:</p>
<blockquote>
<p>Ne! Sorry, aber der operator+ ist kompletter Blödsinn. Du veränderst damit ja einen der beiden Summanden. Außerdem sollte operator+ immer eine freie Funktion sein, z.B. so:</p>
<pre><code class="language-cpp">Vector operator+ (const Vector&amp; Left, const Vector&amp; Right)
{
    return Vector (Left.getX()+Right.getX(), Left.getY()+Right.getY());
}
</code></pre>
<p>Damit das funktioniert, muß Vector noch um einen weiteren Konstruktor ergänzt werden, der x und y übergeben bekommt. Und die getX() und getY() Funktionen müssen const sein.</p>
</blockquote>
<p>ja, einer wird verändert... vlt nicht optimal<br />
aber warum sollte es immer eine freie Funktion sein? -das finde ich unschön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138211</guid><dc:creator><![CDATA[golden_jubilee]]></dc:creator><pubDate>Fri, 15 Sep 2006 21:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 21:17:44 GMT]]></title><description><![CDATA[<p>steff3 schrieb:</p>
<blockquote>
<p>ja, einer wird verändert... vlt nicht optimal</p>
</blockquote>
<p>hehe.. &quot;nicht optimal&quot; ist jetzt das neue &quot;falsch&quot; oder wie? <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/1138217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138217</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 15 Sep 2006 21:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 21:22:46 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>hehe.. &quot;nicht optimal&quot; ist jetzt das neue &quot;falsch&quot; oder wie? <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>&quot;<a href="http://de.wikipedia.org/wiki/Suboptimal" rel="nofollow">suboptimal</a>&quot; ist eigentlich das ersatzwort für codebeschreibende fäkalausdrücke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138219</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 15 Sep 2006 21:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Fri, 15 Sep 2006 21:22:12 GMT]]></title><description><![CDATA[<p>Weil operator+ sonst unsymmetrisch wird. Nehmen wir an das folgende geht:</p>
<p>a + b</p>
<p>Dann würde man doch erwarten, daß auch das hier geht:</p>
<p>b + a</p>
<p>Wenn aber nun b von einem anderen Typ ist als a (und a einen Konstruktor hat, der b als Argument nimmt), geht das eben nicht mehr, wenn operator+ eine Member-Funktion ist.</p>
<p>Ok, so eine zweite Klasse haben wir in diesem Fall nicht und Vector hat auch keinen solchen Konstruktor. Aber was nicht ist, kann ja noch werden. Ich finde jedes Klassen-Design hochgradig fragwürdig, bei dem das Hinzufügen eines Konstruktors den operator+ dazu veranlaßt sich seltsam zu verhalten und darum bleibe ich bei meinem Standpunkt, daß operator+ unter allen Umständen eine freie Funktion sein sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138220</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 15 Sep 2006 21:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Mon, 18 Sep 2006 10:50:46 GMT]]></title><description><![CDATA[<p>Warum nennt ihr den Operator nicht gleich += ?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139467</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 18 Sep 2006 10:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Mon, 18 Sep 2006 12:48:57 GMT]]></title><description><![CDATA[<p>Operator+ muss nicht frei sein. In dem Fall würde es nichtmal besonders viel Sinn machen. Bei einer Skalarmultiplikation allerdings schon:</p>
<pre><code class="language-cpp">Vector a( 1.0f, 2.0f, 3.0f );
float  skalar = 10.0f;

a = a * skalar;
a = skalar * a; // diesda funktioniert nur per freiem operator +
</code></pre>
<p>Allerdings ist die oben genannte Version tatsächlich sehr seltsam:</p>
<pre><code class="language-cpp">Vektor operator + ( Vektor a){ // const Vector &amp;a wär schöner
      Vektor c;

      _x = a.getX() + _x;  // _x und _y sollten hier NICHT geändert werden, das ist Sache des += Operators
      _y = _y + a.getY();
      return *this; // whatever... 
}
</code></pre>
<p>Da keine Memberattribute geändert werden sollte die Funktion konstant sein, also:</p>
<pre><code class="language-cpp">Vektor operator +( const Vektor &amp;a ) const
{
    return Vektor( _x+a.x, _y+a.y );
}
</code></pre>
<p>Oder eben ausgelagert (frei), wie oben erwähnt.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139563</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 18 Sep 2006 12:48:57 GMT</pubDate></item></channel></rss>