<?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 überladungsaufgabe]]></title><description><![CDATA[<p>mein code:</p>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 01.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner ): itsZaehler(zaehler), itsNenner(nenner) {}
	~Bruch();

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner( unsigned int nenner ) { itsNenner = nenner; }
	unsigned int getNenner() const { return itsNenner; }

	// Operatoren
	// Plus Operator+
	const Bruch Bruch::plus( Bruch const&amp; rhs ) const; //Implementiert die Addition
	const Bruch operator+( Bruch const&amp; lhs, Bruch const&amp; rhs)
	{ return lhs.plus(rhs); }

	// Minus Operator-
	const Bruch Bruch::minus( Bruch const&amp; rhs ) const; //Implementiert die Subtraktion
	const Bruch operator-( Bruch const&amp; lhs, Bruch const&amp; rhs )
	{ return lhs.minus(rhs); }

	// Ausgabe Operator&lt;&lt;
	std::ostream&amp; Bruch::outputToStream( std::ostream&amp; ) const;
	std::ostream&amp; operator&lt;&lt;( std::ostream&amp; lhs, Bruch const&amp; rhs )
	{ return rhs.outputToStream(lhs); }

	// Eingabe Operatur&gt;&gt;
	std::istream&amp; Bruch::imputToStream( std::istream&amp; ) const;
	std::istream&amp; operator&gt;&gt;( std::istream&amp; lhs, Bruch const&amp; rhs )
	{ return rhs.imputToStream(lhs); }

private:
	int itsZaehler;
	unsigned int itsNenner;
};

int main()
{

}
</code></pre>
<p>hab den artikel durchgelesen: <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29</a></p>
<p>aber irgendwie komme ich nicht weiter, soll ich die bruch-rechnung in dem operator reinschreiben ?<br />
wäre nett wenn mir hier jemand mal auf die sprünge helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260289/operatoren-überladungsaufgabe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 07:24:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260289.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Feb 2010 11:03:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Sun, 07 Feb 2010 11:34:25 GMT]]></title><description><![CDATA[<p>mein code:</p>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 01.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner ): itsZaehler(zaehler), itsNenner(nenner) {}
	~Bruch();

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner( unsigned int nenner ) { itsNenner = nenner; }
	unsigned int getNenner() const { return itsNenner; }

	// Operatoren
	// Plus Operator+
	const Bruch Bruch::plus( Bruch const&amp; rhs ) const; //Implementiert die Addition
	const Bruch operator+( Bruch const&amp; lhs, Bruch const&amp; rhs)
	{ return lhs.plus(rhs); }

	// Minus Operator-
	const Bruch Bruch::minus( Bruch const&amp; rhs ) const; //Implementiert die Subtraktion
	const Bruch operator-( Bruch const&amp; lhs, Bruch const&amp; rhs )
	{ return lhs.minus(rhs); }

	// Ausgabe Operator&lt;&lt;
	std::ostream&amp; Bruch::outputToStream( std::ostream&amp; ) const;
	std::ostream&amp; operator&lt;&lt;( std::ostream&amp; lhs, Bruch const&amp; rhs )
	{ return rhs.outputToStream(lhs); }

	// Eingabe Operatur&gt;&gt;
	std::istream&amp; Bruch::imputToStream( std::istream&amp; ) const;
	std::istream&amp; operator&gt;&gt;( std::istream&amp; lhs, Bruch const&amp; rhs )
	{ return rhs.imputToStream(lhs); }

private:
	int itsZaehler;
	unsigned int itsNenner;
};

int main()
{

}
</code></pre>
<p>hab den artikel durchgelesen: <a href="http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29" rel="nofollow">http://magazin.c-plusplus.net/artikel/%DCberladung%20von%20Operatoren%20in%20CPlusPlus%20%28Teil%201%29</a></p>
<p>aber irgendwie komme ich nicht weiter, soll ich die bruch-rechnung in dem operator reinschreiben ?<br />
wäre nett wenn mir hier jemand mal auf die sprünge helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849653</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Sun, 07 Feb 2010 11:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 11:12:45 GMT]]></title><description><![CDATA[<p>1. Die operatoren außerhalb der Klasse definieren! + und - sollten keine Member sein. <a href="http://www.gotw.ca/gotw/004.htm" rel="nofollow">Siehe 3. in got #4</a>.</p>
<p>2. Du nutzt die Operatoren ja, um die Memberfunktionen im Hintergrund aufzurufen. Was eine gute Taktik ist. Jetzt musst du also nur noch diese Memberfunktionen so implementieren, wie es in der Aufgabenbeschreibung vorgegeben ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849669</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Wed, 03 Feb 2010 11:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 13:25:26 GMT]]></title><description><![CDATA[<p>Danke, also mal abgesehen davon, dass ich zum testen noch in der klasse implementier habe sieht das hier doch ein stück richtiger aus oder ?</p>
<p>Ich weiss nur noch wie ich den Bruch richtig einlesen und ausgeben soll.</p>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 03.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner = 1 ): itsZaehler(zaehler), itsNenner(nenner) {}
	~Bruch(){}

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner( unsigned int nenner ) { itsNenner = nenner; }
	unsigned int getNenner() const { return itsNenner; }

	// Operatoren
	void operator+ (Bruch other)
	{
		itsZaehler = (itsZaehler * other.itsNenner) + (other.itsZaehler * itsNenner);
		itsNenner = (itsNenner * other.itsNenner);
	}
	void operator- (Bruch other)
	{
			itsZaehler = (itsZaehler * other.itsNenner) - (other.itsZaehler * itsNenner);
			itsNenner = (itsNenner * other.itsNenner);
	}
	void operator&lt;&lt; (ostream os)
	{
		os &lt;&lt; itsZaehler &lt;&lt; &quot; / &quot; &lt;&lt; itsNenner &lt;&lt; endl;
	}
	void operator&gt;&gt; (istream is)
	{
		is &gt;&gt; itsZaehler; cout &lt;&lt; &quot; / &quot;; is &gt;&gt; itsNenner;
	}

private:
	int itsZaehler;
	unsigned int itsNenner;
};

int main()
{
	int z1, n1, z2, n2;
	cout &lt;&lt; &quot;Geben Sie Zähler.1 und Nenner.1 ein: &quot;;
	cin &gt;&gt; z1 &gt;&gt; n1;
	Bruch a(z1);
	cout &lt;&lt; &quot;Geben Sie Zähler.2 und Nenner.2 ein: &quot;;
	cin &gt;&gt; z2 &gt;&gt; n2;
	Bruch b(z2,n2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1849790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849790</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 13:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 13:37:52 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p>1. Die operatoren außerhalb der Klasse definieren! + und - sollten keine Member sein. <a href="http://www.gotw.ca/gotw/004.htm" rel="nofollow">Siehe 3. in got #4</a>.</p>
</blockquote>
<p>Außerhalb der Klasse == freie Funktion, du hast op- und op+ immer noch in der Klasse, zu allem Überfluss sind dir die Rückgabewerte abhanden gekomment :p<br />
Lies dir das Kapitel im Artikel nochmal durch, und verwechsel auch operator+ und operator += nicht - letzterer macht in der Klasse mehr Sinn <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/1849794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849794</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 03 Feb 2010 13:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 14:14:37 GMT]]></title><description><![CDATA[<p>c.groupe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">~Bruch(){}
</code></pre>
</blockquote>
<p>Laut kommenden C++ Standard machst Du durch diese Zeile (benutzerdefinierter Destruktor) aus Bruch eine nicht-trivial kopierbare Klasse. Das ist Deinem Fall aber unnötig und verhindert Optimierungen. Ich würde die Zeile einfach weglassen.</p>
<blockquote>
<pre><code class="language-cpp">void operator+ (Bruch other);
	void operator- (Bruch other);
	void operator&lt;&lt; (ostream os);
	void operator&gt;&gt; (istream is);
</code></pre>
</blockquote>
<p>Dies sollten keine Elementfunktionen sein. Besser:</p>
<pre><code class="language-cpp">// Freie Funktionen in demselben Namensraum wie Bruch:
inline Bruch operator+(Bruch a, Bruch b)
{
  return Bruch(
    a.zaehler()*b.nenner()+b.zaehler()*a.nenner(),
    a.nenner()*b.nenner()
  );
}

inline std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, Bruch b)
{
  return os &lt;&lt; '(' &lt;&lt; b.zaehler() &lt;&lt; '/' &lt;&lt; b.nenner() &lt;&lt; ');
}
</code></pre>
<p>Praktisch wäre noch ein kürzender Kontruktor, der auch dafür sorgt, dass nenner nie negativ ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849821</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 03 Feb 2010 14:14:37 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 16:22:07 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>rüdiger schrieb:</p>
<blockquote>
<p>1. Die operatoren außerhalb der Klasse definieren! + und - sollten keine Member sein. <a href="http://www.gotw.ca/gotw/004.htm" rel="nofollow">Siehe 3. in got #4</a>.</p>
</blockquote>
<p>Außerhalb der Klasse == freie Funktion, du hast op- und op+ immer noch in der Klasse, zu allem Überfluss sind dir die Rückgabewerte abhanden gekomment :p<br />
Lies dir das Kapitel im Artikel nochmal durch, und verwechsel auch operator+ und operator += nicht - letzterer macht in der Klasse mehr Sinn <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>
</blockquote>
<p>ja stimmt schon das der += operator angebrachter wäre, aber das ist eben nicht gefragt gewesen. trotzdem danke. <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/1849929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849929</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 16:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 16:25:37 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Praktisch wäre noch ein kürzender Kontruktor, der auch dafür sorgt, dass nenner nie negativ ist.</p>
</blockquote>
<p>Vielen Danke erstmal, so langsam klappts nun auch immer besser.<br />
Ja stimmt, zumindest soll man ja, wenn kein nenner übergeben wird ihn mit:<br />
nenner = 1; initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849932</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 16:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 16:58:17 GMT]]></title><description><![CDATA[<p>so nun klappt schon mal das eingeben und ausgeben, fehlt nur noch,<br />
die beiden brüche auch zu benutzen..</p>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 03.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner = 1 ): itsZaehler(zaehler), itsNenner(nenner) {}

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner( unsigned int nenner ) { itsNenner = nenner; }
	unsigned int getNenner() const { return itsNenner; }

	// Operatoren
	void operator+ (Bruch other);
	void operator- (Bruch other);
	void operator&lt;&lt; (ostream os);
	void operator&gt;&gt; (istream is);

private:
	int itsZaehler;
	unsigned int itsNenner;
};

// Initialisieren der Operatoren ausserhalb der Klasse
// Freie Funktionen in demselben Namensraum wie Bruch:
inline Bruch operator+(Bruch a, Bruch b)
{
  return Bruch(
    a.getZaehler()*b.getNenner()+b.getZaehler()*a.getNenner(),
    a.getNenner()*b.getNenner()
  );
}

inline Bruch operator-(Bruch a, Bruch b)
{
  return Bruch(
    a.getZaehler()*b.getNenner()-b.getZaehler()*a.getNenner(),
    a.getNenner()*b.getNenner()
  );
}

inline std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, Bruch b)
{
  return os &lt;&lt; '(' &lt;&lt; b.getZaehler() &lt;&lt; '/' &lt;&lt; b.getNenner() &lt;&lt; ')';
}

/*
inline std::istream&amp; operator&gt;&gt;(std::istream&amp; os, Bruch b)
{
  return is &gt;&gt; b.setZaehler() &gt;&gt; b.setNenner();
}
*/

int main()
{
	int z1, n1, z2, n2;
	cout &lt;&lt; &quot;Geben Sie Zähler.1 und Nenner.1 ein: &quot;;
	cin &gt;&gt; z1; cin &gt;&gt; n1;
	Bruch a(z1,n1);
	cout &lt;&lt; &quot;Geben Sie Zähler.2 und Nenner.2 ein: &quot;;
	cin &gt;&gt; z2; cin &gt;&gt; n2;
	Bruch b(z2,n2);

	cout &lt;&lt; &quot;Bruch a: &quot; &lt;&lt; a &lt;&lt; &quot;\tBruch b: &quot; &lt;&lt; b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1849947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849947</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 16:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 17:59:00 GMT]]></title><description><![CDATA[<p>Hab ichs oder hab ichs ? <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="😃"
    /> <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="😃"
    /> <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>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 03.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner = 1 )
		: itsZaehler(zaehler), itsNenner(nenner) {}

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner(  int nenner ) { itsNenner = nenner; }
	int getNenner() const { return itsNenner; }

    // Operatoren
    const Bruch Bruch::plus( Bruch const&amp; rhs ) const; //Implementiert die Addition
    const Bruch Bruch::minus( Bruch const&amp; rhs ) const; //Implementiert die Subtraktion
    std::ostream&amp; Bruch::outputToStream( std::ostream&amp; ) const;
    std::istream&amp; Bruch::imputToStream( std::istream&amp; ) const;

private:
	int itsZaehler;
	unsigned int itsNenner;
};

// Initialisieren der Operatoren ausserhalb der Klasse
// Freie Funktionen in demselben Namensraum wie Bruch:
inline Bruch operator+( Bruch &amp;a, Bruch &amp;b )
{
	return Bruch(
    a.getZaehler()*b.getNenner()+b.getZaehler()*a.getNenner(),
    a.getNenner()*b.getNenner() );

}

inline Bruch operator-(Bruch &amp;a, Bruch &amp;b)
{
  return Bruch(
   a.getZaehler()*b.getNenner()-b.getZaehler()*a.getNenner(),
   a.getNenner()*b.getNenner() );

}

inline std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, Bruch b)
{
  return os &lt;&lt; &quot;( &quot; &lt;&lt; b.getZaehler() &lt;&lt; &quot; / &quot; &lt;&lt; b.getNenner() &lt;&lt; &quot; )&quot;;
}

int main()
{
	int z1, n1, z2, n2;
	cout &lt;&lt; &quot;Geben Sie Zähler.a und Nenner.a ein: &quot;;
	cin &gt;&gt; z1; cin &gt;&gt; n1;
	Bruch a(z1,n1);
	cout &lt;&lt; &quot;Geben Sie Zähler.b und Nenner.b ein: &quot;;
	cin &gt;&gt; z2; cin &gt;&gt; n2;
	Bruch b(z2,n2);
	a= a+b;
	b= a-b;
	cout &lt;&lt; &quot;(Bruch a + Bruch b) Ergebniss: &quot; &lt;&lt; a &lt;&lt; endl;
	cout &lt;&lt; &quot;(Bruch a - Bruch b) Ergebniss: &quot; &lt;&lt; b &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1849990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849990</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 17:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 18:04:54 GMT]]></title><description><![CDATA[<p>c.groupe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Bruch
{
public:
...
    // Operatoren
    const Bruch Bruch::plus( Bruch const&amp; rhs ) const; //Implementiert die Addition
    const Bruch Bruch::minus( Bruch const&amp; rhs ) const; //Implementiert die Subtraktion
    std::ostream&amp; Bruch::outputToStream( std::ostream&amp; ) const;
    std::istream&amp; Bruch::imputToStream( std::istream&amp; ) const;
</code></pre>
</blockquote>
<p>Was soll das denn? Wegschmeißen, diese Deklarationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849992</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 03 Feb 2010 18:04:54 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 18:10:30 GMT]]></title><description><![CDATA[<p>Jap, hab ich auch grad gemerkt <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>
<pre><code class="language-cpp">/*
 * Bruch.cpp
 *
 *  Created on: 03.02.2010
 *      Author: c.groupe
 */
#include &lt;iostream&gt;
using namespace std;

class Bruch
{
public:
	// Konstruktoren
	Bruch( int zaehler, int nenner = 1 )
		: itsZaehler(zaehler), itsNenner(nenner) {}

	// Zugriffsfunktionen
	void setZaehler( int zaehler ) { itsZaehler = zaehler; }
	int getZaehler() const { return itsZaehler; }
	void setNenner(  int nenner ) { itsNenner = nenner; }
	int getNenner() const { return itsNenner; }

private:
	int itsZaehler;
	unsigned int itsNenner;
};
// Initialisieren der Operatoren ausserhalb der Klasse
// Freie Funktionen in demselben Namensraum wie Bruch:
inline Bruch operator+( Bruch &amp;a, Bruch &amp;b )
{
	return Bruch(
    a.getZaehler()*b.getNenner()+b.getZaehler()*a.getNenner(),
    a.getNenner()*b.getNenner() );
}

inline Bruch operator-(Bruch &amp;a, Bruch &amp;b)
{
  return Bruch(
   a.getZaehler()*b.getNenner()-b.getZaehler()*a.getNenner(),
   a.getNenner()*b.getNenner() );
}

inline std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, Bruch b)
{
  return os &lt;&lt; &quot;( &quot; &lt;&lt; b.getZaehler() &lt;&lt; &quot; / &quot; &lt;&lt; b.getNenner() &lt;&lt; &quot; )&quot;;
}

int main()
{
	int z1, n1, z2, n2;
	cout &lt;&lt; &quot;Geben Sie Bruch a ein: Zähler Nenner: &quot;;
	cin &gt;&gt; z1; cin &gt;&gt; n1;
	Bruch a(z1,n1);
	cout &lt;&lt; &quot;Geben Sie Bruch b ein: Zähler Nenner: &quot;;
	cin &gt;&gt; z2; cin &gt;&gt; n2;
	Bruch b(z2,n2);
	a= a-b;
	cout &lt;&lt; &quot;(Bruch a - Bruch b) Ergebniss: &quot; &lt;&lt; a &lt;&lt; endl;
	return 0;
}
</code></pre>
<p>klappt <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/1849997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849997</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 18:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 18:14:13 GMT]]></title><description><![CDATA[<p>Und jetzt sind wir noch constkorrekt und vermeiden unnötige Kopien:</p>
<pre><code class="language-cpp">inline Bruch operator+( const Bruch &amp;a, const Bruch &amp;b ) { //

inline Bruch operator-(const Bruch &amp;a, const Bruch &amp;b) { //

inline std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Bruch&amp; b) { //
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1849999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849999</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 03 Feb 2010 18:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 18:22:44 GMT]]></title><description><![CDATA[<p>so nun müsste dann ja eigenltlich alles fertig sein.<br />
war ne schoene aufgabe, hab viel gelernt.<br />
danke an alle <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>edit: nein, eine frage noch</p>
<p>warum ist es eigentlich egal wenn ich bei den operatoren<br />
a und b on value oder on referenz übergebe ?</p>
<p>inline Bruch operator-(Bruch a, Bruch b)<br />
inline Bruch operator-(Bruch&amp; a, Bruch&amp; b)</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850003</guid><dc:creator><![CDATA[c.groupe]]></dc:creator><pubDate>Wed, 03 Feb 2010 18:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to operatoren überladungsaufgabe on Wed, 03 Feb 2010 18:36:29 GMT]]></title><description><![CDATA[<p>c.groupe schrieb:</p>
<blockquote>
<p>warum ist es eigentlich egal wenn ich bei den operatoren<br />
a und b on value oder on referenz übergebe ?</p>
<p>inline Bruch operator-(Bruch a, Bruch b)<br />
inline Bruch operator-(Bruch&amp; a, Bruch&amp; b)</p>
</blockquote>
<p>Ist es nicht.</p>
<p>Hausaufgabe: Im C++ Buch nachlesen, wie Referenzen funktionieren, wie sie initialisiert werden, was &quot;const&quot; in diesem Kontext für eine Rolle spielt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850011</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 03 Feb 2010 18:36:29 GMT</pubDate></item></channel></rss>