<?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[Operator Overloading]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Methode und eine Funktion &quot;operator+(int)&quot; implementieren für die Klasse Time,</p>
<p>der operator soll die Minuten zur aktuellen Zeit hinzuzählen,</p>
<p>Kann mir da jemand helfen?</p>
<p>lg und vielen Dank,</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203341/operator-overloading</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:58:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203341.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jan 2008 18:40:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator Overloading on Mon, 21 Jan 2008 18:40:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Methode und eine Funktion &quot;operator+(int)&quot; implementieren für die Klasse Time,</p>
<p>der operator soll die Minuten zur aktuellen Zeit hinzuzählen,</p>
<p>Kann mir da jemand helfen?</p>
<p>lg und vielen Dank,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440852</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Mon, 21 Jan 2008 18:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Mon, 21 Jan 2008 19:12:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Time operator+(int minuten) {
    // bla
}
</code></pre>
<p>Du musst schon sagen, wie du deine Klasse aufgebaut hast!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440873</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Mon, 21 Jan 2008 19:12:05 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Mon, 21 Jan 2008 19:17:53 GMT]]></title><description><![CDATA[<p>So schaut meine Klasse aus:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
class Time {
public:
Time(int _h, int _m) : h(_h), m(_m) {}
void print() {
cout &lt;&lt; h &lt;&lt; &quot;:&quot; &lt;&lt; m &lt;&lt; endl:
int h, m;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1440875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440875</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Mon, 21 Jan 2008 19:17:53 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Mon, 21 Jan 2008 20:46:04 GMT]]></title><description><![CDATA[<p>PollerCPP schrieb:</p>
<blockquote>
<p>So schaut meine Klasse aus:...</p>
</blockquote>
<p>Zum einen C++ Codetags verwenden (und bitte lesbar formatieren), zum anderen ist die Klasse abgeschnitten.</p>
<p>Und ansonsten ist ein Operator wie schon gezeigt eine einfache Methode, oder besser: eine Funktion (dann können Minuten auch das linke Argument sein, ansonsten muß die Klasse immer links stehen).</p>
<p>Übliche Implementierung ist das man sowohl einen += als auch + Operator definiert, und den + Operator über zuhilfename des += Operators schreibt:</p>
<pre><code class="language-cpp">class Time
{
    // ...
    Time&amp; operator+=(int minuten)
    {
        // &lt;-- Deine Implementierung
        return *this;
    }

    Time operator+(int minuten)
    {
        Time temp = *this;
        temp += minuten;
        return temp;
    }
    // ...
};

// Alternativ +Operator aus der Klasse ziehen:
Time operator+(const Time&amp; time, int minuten)
{
    Time temp = time;
    temp += minuten;
    return temp;
}
</code></pre>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440919</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 21 Jan 2008 20:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Mon, 21 Jan 2008 21:11:15 GMT]]></title><description><![CDATA[<p>rein zum verständnis:</p>
<blockquote>
<p>Time&amp; operator+=(int minuten)<br />
{<br />
// &lt;-- Deine Implementierung<br />
return *this;<br />
}</p>
</blockquote>
<p>hier übergebe ich ja eine referenz vom typ Time...<br />
da dies einer adresse entspricht, ist der rückgabewert ein zeiger, der im<br />
eigentlichen sinne auch nur einer adresse entspricht...</p>
<p>könnte ich auch einfach:</p>
<blockquote>
<p>Time* operator+=(int minuten)<br />
{<br />
// &lt;-- Deine Implementierung<br />
return *this;<br />
}</p>
</blockquote>
<p>schreiben?! bzw. warum muss ich unbedingt eine referenz übergeben?!</p>
<p>im 2. fall:</p>
<blockquote>
<p>Time operator+(const Time&amp; time, int minuten)<br />
{<br />
Time temp = time;<br />
temp += minuten;<br />
return temp;<br />
}</p>
</blockquote>
<p>erzeuge ich ja ein objekt des types temp (im block)...<br />
von variablen weiss ich, das sie bei beenden des blockes ihre<br />
gültigkeit verlieren, wenn sie erst dort angelegt sind.<br />
bei objekten scheint das ja dann anders zu sein?!</p>
<p>ein beispiel zu den beiden methoden wäre schön <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>gruss pete</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440933</guid><dc:creator><![CDATA[petedeluxe2k]]></dc:creator><pubDate>Mon, 21 Jan 2008 21:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 04:57:15 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>den + Operator über zuhilfename des += Operators schreibt:</p>
<p>[cpp]class Time<br />
{<br />
// ...<br />
Time&amp; operator+=(int minuten)<br />
{<br />
// &lt;-- Deine Implementierung<br />
return *this;<br />
}</p>
</blockquote>
<p>Die Implementierung wäre noch interessant, mir ist nichtganz klar, wie ich nur die minuten dazuzählen kann, damit das Ergebnis auch gültig bleibt (0 &lt;= h &lt; 24, 0 &lt;= m &lt; 60)</p>
<p>Vielen Dank,</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441018</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Tue, 22 Jan 2008 04:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 06:15:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17072">@PollerCPP</a>:<br />
Na, da ist aber ein bisschen Eigeninitiative gefragt. Du erhöhst die Minuten, wenn die über 60 gehen, ziehst Du 60 ab und erhöhst die Stunden um eins. Das in einer Schleife bis min &lt; 60.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17359">@petedeluxe2k</a>:<br />
Quark, Referenzen sind keine Zeiger. Und der Sinn von Referenzen an dieser Stelle (wie von Referenzen überhaupt) ist die natürlichere Lesbarkeit. Oder sieht folgendes natürlich aus <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>
<pre><code class="language-cpp">Time a;
cout &lt;&lt; *(&amp;a + 1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441021</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 22 Jan 2008 06:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 06:48:11 GMT]]></title><description><![CDATA[<p>Sollte nich auch die Variante vorhanden sein:</p>
<pre><code class="language-cpp">// Alternativ +Operator aus der Klasse ziehen: 
Time operator+(const Time&amp; ltime, const Time&amp; rtime) 
{ 
..........
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441027</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 22 Jan 2008 06:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 06:50:03 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17072">@PollerCPP</a>:<br />
Na, da ist aber ein bisschen Eigeninitiative gefragt. Du erhöhst die Minuten, wenn die über 60 gehen, ziehst Du 60 ab und erhöhst die Stunden um eins. Das in einer Schleife bis min &lt; 60.</p>
</blockquote>
<p>Warum einfach, wenn's auch kompliziert geht? Es gibt doch einen Modulo- und Divisions-Operator dafür <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/1441030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441030</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 22 Jan 2008 06:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 06:53:13 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Warum einfach, wenn's auch kompliziert geht? Es gibt doch einen Modulo- und Divisions-Operator dafür <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>
</blockquote>
<p>Klar, aber ich wollte erstmal die naivste Lösung vorschlagen (wenn er schon nicht selbst auf irgendeine mögliche Implementierung kommt) <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/1441032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441032</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 22 Jan 2008 06:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading on Tue, 22 Jan 2008 07:27:03 GMT]]></title><description><![CDATA[<p>petedeluxe2k schrieb:</p>
<blockquote>
<p>rein zum verständnis:<br />
...<br />
hier übergebe ich ja eine referenz vom typ Time...<br />
da dies einer adresse entspricht, ist der rückgabewert ein zeiger, der im<br />
eigentlichen sinne auch nur einer adresse entspricht...</p>
</blockquote>
<p>Nein, eine Referenz ist ein Aliasname kein Zeiger (Und egal wie es der Compiler intern macht, ob er dies mittels Zeiger auflöst oder - und das glaube ich eher - anders ist erst einmal egal).</p>
<p>Ich möchte Operatoren wie folgt nutzen können:</p>
<pre><code class="language-cpp">Time t1(12, 15);
Time t2 = t1 + 135;
t2 += 20;
t1 = t1 + t2 + 123 + 234;
</code></pre>
<p>Und nicht erst Zeigerumwandlungen anstellen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441045</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 22 Jan 2008 07:27:03 GMT</pubDate></item></channel></rss>