<?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>Ich kenne mich recht gut mit Java aus, bin aber ein totaler Anfänger was C++ angeht.<br />
In der Uni haben wir ein paar Übungsaufgaben zu C++ erhalten (es geht um Bruchrechnung). Ich bin soweit durchgekommen, habe allerdings Verständnisschwierigkeiten bei den letzten beiden:</p>
<ul>
<li>Schreiben Sie zu der Klasse Operatoren für *= += -= /= und ==.</li>
<li>Verwenden Sie die eben implementierten Methoden um freie Operatoren * + - / zu implementieren.</li>
</ul>
<p>Ich habe mir dies durchgelesen:<br />
<a href="https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Eigene_Datentypen_definieren/_Operatoren_%C3%BCberladen" rel="nofollow">https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Eigene_Datentypen_definieren/_Operatoren_%C3%BCberladen</a><br />
<a href="http://www.c-plusplus.net/forum/232010-full" rel="nofollow">http://www.c-plusplus.net/forum/232010-full</a><br />
Trotzdem verstehe ich einfach nicht, wozu das Ganze gut sein soll.</p>
<p>Könnte mir vielleicht jemand helfen?</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316071/operatoren-überladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 06:14:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316071.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Apr 2013 00:25:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 00:28:21 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich kenne mich recht gut mit Java aus, bin aber ein totaler Anfänger was C++ angeht.<br />
In der Uni haben wir ein paar Übungsaufgaben zu C++ erhalten (es geht um Bruchrechnung). Ich bin soweit durchgekommen, habe allerdings Verständnisschwierigkeiten bei den letzten beiden:</p>
<ul>
<li>Schreiben Sie zu der Klasse Operatoren für *= += -= /= und ==.</li>
<li>Verwenden Sie die eben implementierten Methoden um freie Operatoren * + - / zu implementieren.</li>
</ul>
<p>Ich habe mir dies durchgelesen:<br />
<a href="https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Eigene_Datentypen_definieren/_Operatoren_%C3%BCberladen" rel="nofollow">https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Eigene_Datentypen_definieren/_Operatoren_%C3%BCberladen</a><br />
<a href="http://www.c-plusplus.net/forum/232010-full" rel="nofollow">http://www.c-plusplus.net/forum/232010-full</a><br />
Trotzdem verstehe ich einfach nicht, wozu das Ganze gut sein soll.</p>
<p>Könnte mir vielleicht jemand helfen?</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317091</guid><dc:creator><![CDATA[dolbik]]></dc:creator><pubDate>Sun, 21 Apr 2013 00:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 00:49:11 GMT]]></title><description><![CDATA[<p>Die Definition (oder Überladung) von Operatoren in Klassen macht es möglich, Instanzen der Klasse mit Operatoren (anders) zu verwenden. Dies kann Code übersichtlicher machen.<br />
Ein gutes Beispiel sind Strings. Statt einen String über Klassen-Methode <strong>Concat</strong> mit einem anderen zusammenzufügen und daraus einen neuen zu erstellen, können beide durch den <strong>Operator +</strong> auch einfach addiert werden.</p>
<pre><code>string a = &quot;Hello &quot;, b = &quot;world!&quot;;
//string c = a.Concat();
string c = a + b;
</code></pre>
<p>Sieht besser aus und ist weniger Text.</p>
<p>Es können auch global Operatoren überladen werden, womit z.B. das Addieren von bekannten Strukturen mit Zahlen möglich gemacht werden könnte.</p>
<p>Die Erklärungen in deinen verlinkten Tutorials sind eigentlich sehr gut. Nenne genau, was du nicht verstehst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317092</guid><dc:creator><![CDATA[Youka]]></dc:creator><pubDate>Sun, 21 Apr 2013 00:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 00:56:09 GMT]]></title><description><![CDATA[<p>Youka schrieb:</p>
<blockquote>
<p>Nenne genau, was du nicht verstehst.</p>
</blockquote>
<p>Also ehrlichgesagt verstehe ich einfach die Aufgabenstellung nicht:</p>
<ul>
<li>Schreiben Sie zu der Klasse Operatoren für *= += -= /= und ==.</li>
<li>Verwenden Sie die eben implementierten Methoden um freie Operatoren * + - / zu implementieren.</li>
</ul>
<p>Wie soll ich &quot;zu der Klasse&quot; Operatoren schreiben?<br />
Wie und warum soll ich &quot;freie Operatoren&quot; implementieren?</p>
<p>Tut mir leid, ich kann eigentlich programmieren, habe aber im Moment eine Denkblockade...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317093</guid><dc:creator><![CDATA[dolbik]]></dc:creator><pubDate>Sun, 21 Apr 2013 00:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 01:01:31 GMT]]></title><description><![CDATA[<p>Operatoren zu überladen ist ein Konzept das in Java einfach nicht existiert, die Sprache bietet es nicht an. In C++ kann man Operatoren auf Klassen allerdings Funktionen zuweisen: <a href="https://ideone.com/jDJMPM" rel="nofollow">https://ideone.com/jDJMPM</a></p>
<pre><code>struct s { int a; };

s operator + (const s&amp; lhs, const s&amp; rhs)
{
  s r;
  r.a = lhs.a + rhs.a;
  return r;
}

int main()
{
  s a, b;
  a.a = 5;
  b.a = 7;
  s c = a + b;
}
</code></pre>
<p>&quot;Nicht frei&quot; nennt man Überladungen die als Memberfunktion implementiert werden. Die Operatorüberladung von oben wäre z.B. frei - hätte ich den Operator dagegen in der Klasse selbst implementiert, wäre das nicht der Fall. Diese Ausdrucksweise wird in C++ gemeinhin für alle Funktionen verwendet. Eine freie Funktion ist halt einfach keine Memberfunktion. (Auch das existiert in Java nicht.) (main ist z.B. eine freie Funktion.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317094</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 21 Apr 2013 01:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 17:42:48 GMT]]></title><description><![CDATA[<p>Dankeschön!</p>
<p>Ich habe mir jetzt zum Testen etwas zusammengebastelt, erhalte aber folgenden Fehler:</p>
<blockquote>
<p>operators.cpp: In function ‘int main()’:<br />
operators.cpp: 27:10: error: match for ‘operator&lt;&lt;’ in ‘std::cout &lt;&lt; res’</p>
</blockquote>
<pre><code>#include &lt;iostream&gt;

using namespace std;

class Operators{

	private:
		int num1;

	public:
		Operators();
		Operators(int num1){
			this-&gt;num1 = num1;
		}

		Operators operator+(Operators o){
			return Operators(num1 + o.num1);
		}

};

int main(){
	Operators o1(5);
	Operators o2(10);
	Operators res = o1 + o2;

	cout &lt;&lt; res; // PROBLEM
}
</code></pre>
<p>Das Problem ist wohl die Ausgabe des Wertes. Wie kriege ich es hin, dass die 15 (5+10) ausgegeben wird?</p>
<p><em>Ich weiß, in meinem Fall macht das Überladen wenig Sinn, ich bin num am &quot;Rumspielen&quot;.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317254</guid><dc:creator><![CDATA[dolbik]]></dc:creator><pubDate>Sun, 21 Apr 2013 17:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen on Sun, 21 Apr 2013 17:50:49 GMT]]></title><description><![CDATA[<p>Indem du den Ausgabeoperator überlädst. <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="😃"
    /> Das geht so:</p>
<pre><code>std::ostream&amp; operator &lt;&lt; (std::ostream&amp; stream, const Operators&amp; op)
{
  stream &lt;&lt; op.num1;
  return stream;
}
</code></pre>
<p>Diese Funktion gibst du dann als friend in deiner Klasse an - oder du bietest gleich einen getter für num1 oder machst es public, dann kann man das sofort ausgeben. Wie du willst, das kommt auf den Einzelfall an. Und nach &quot;Initialisierungsliste&quot; solltest du mal googeln, das gibt es in Java auch nicht, sollte man für C++ allerdings unbedingt kennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2317257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2317257</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 21 Apr 2013 17:50:49 GMT</pubDate></item></channel></rss>