<?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überladung wiedermal, verständnisproblem]]></title><description><![CDATA[<p>huhu</p>
<p>also meine fragen gleich mal:</p>
<p>was ist der unterschied, wenn ich zB vergleichsoperatoren in die klasse mit einem parameter reinschriebe, oder als friend ausserhalb mit 2 parametern?</p>
<p>bsp:</p>
<pre><code class="language-cpp">class test
{
  public:
  bool operator&lt;(const test&amp; Obj)
  {
    return data&lt;Obj.data;
  }
  friend bool operator&lt;(const test&amp; lhs,const test&amp; rhs);
  private:
  int data;
};

bool operator&lt;(const test&amp; lhs,const test&amp; rhs)
{
 return lhs.data&lt;rhs.data;
};
</code></pre>
<p>so, eigentlich die selbe frage gilt auch für den + operator (natürlich nicht wenn um eingebaute typen geht, sondern nur um eigene)</p>
<p>gibt es da irgendwelche faustregeln oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/138787/operatorüberladung-wiedermal-verständnisproblem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 06:21:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/138787.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Mar 2006 11:26:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:26:57 GMT]]></title><description><![CDATA[<p>huhu</p>
<p>also meine fragen gleich mal:</p>
<p>was ist der unterschied, wenn ich zB vergleichsoperatoren in die klasse mit einem parameter reinschriebe, oder als friend ausserhalb mit 2 parametern?</p>
<p>bsp:</p>
<pre><code class="language-cpp">class test
{
  public:
  bool operator&lt;(const test&amp; Obj)
  {
    return data&lt;Obj.data;
  }
  friend bool operator&lt;(const test&amp; lhs,const test&amp; rhs);
  private:
  int data;
};

bool operator&lt;(const test&amp; lhs,const test&amp; rhs)
{
 return lhs.data&lt;rhs.data;
};
</code></pre>
<p>so, eigentlich die selbe frage gilt auch für den + operator (natürlich nicht wenn um eingebaute typen geht, sondern nur um eigene)</p>
<p>gibt es da irgendwelche faustregeln oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1005795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005795</guid><dc:creator><![CDATA[sadfasdd]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:26:57 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:34:43 GMT]]></title><description><![CDATA[<p>In deinem Fall ist es relativ egal, ich würde die Deklaration in der Klasse bevorzugen.</p>
<p>Die Variante mit dem friend-Operator ist wichtig, wenn es sich um verschiedene Klassen handelt.</p>
<p>Klasse::operator&lt; wird aufgerufen, wenn der linke Operand ein Objekt der Klasse ist, sonst nicht.</p>
<pre><code class="language-cpp">class A {...}; // mit operator&lt;
class B {...}; // mit operator&lt;

A&amp; a = *new A;
B&amp; b = *new B;

a &lt; b; // wird zu  a.operator &lt; (b);
b &lt; a; // wird zu  b.operator &lt; (a);
</code></pre>
<p>Hoffe das ist so richtig und gut erklärt <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/1005802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005802</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:40:39 GMT]]></title><description><![CDATA[<p>ehrlich gesagt ahb ich es noch nicht so richtig verstanden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1005811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005811</guid><dc:creator><![CDATA[sadfasdd]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:40:39 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:43:49 GMT]]></title><description><![CDATA[<p>Nehmen wir an Du willst machen:</p>
<pre><code class="language-cpp">Apfel &lt; Birne
</code></pre>
<p>Innerhalb der Klassen müsstest Du dafür Apfel::operator&lt;(Birne) implementieren. Nehmen wir aber mal an, die Klasse Apfel ist von jemand anderes, Du kannst die nicht ändern. Wasn nu? Dafür ist dann die Variante ausserhalb der Klasse nötig ( global operator&lt;(Apfel, Birne) )</p>
<p>Mal so ganz grob <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/1005817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005817</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:45:37 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Nehmen wir an Du willst machen:</p>
<pre><code class="language-cpp">Apfel &lt; Birne
</code></pre>
<p>Innerhalb der Klassen müsstest Du dafür Apfel::operator&lt;(Birne) implementieren. Nehmen wir aber mal an, die Klasse Apfel ist von jemand anderes, Du kannst die nicht ändern. Wasn nu? Dafür ist dann die Variante ausserhalb der Klasse nötig ( global operator&lt;(Apfel, Birne) )</p>
<p>Mal so ganz grob <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>na bisschen wirds <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>red mal weiter... <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>achso, also wenn der linke operator ein objekt einer anderen klasse sein soll/kann, muss ich logischerweise ausserhalb, da sonst der erste operator immer this ist....oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1005819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005819</guid><dc:creator><![CDATA[sadfasdd]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung wiedermal, verständnisproblem on Wed, 01 Mar 2006 11:46:24 GMT]]></title><description><![CDATA[<p>Solange der Wert links vom Operanden deine Klasse ist, ist es egal. Möchtest Du aber den op&lt;&lt; überladen und dieser soll in einen std::ostream schreiben musst Du dafür eine globale Funktion verwenden, da der linke Operand ein std::ostream ist. friend brauchst Du nur, wenn die Funktion auch auf nicht-öffentliche Elemente deiner Klasse zugreifen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1005820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1005820</guid><dc:creator><![CDATA[&#x2F;.]]></dc:creator><pubDate>Wed, 01 Mar 2006 11:46:24 GMT</pubDate></item></channel></rss>