<?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[Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden?]]></title><description><![CDATA[<p>Wie ich weiß erlaubt das zusätzliche friend im Prototyp der Klasse das eine andere Klasse auf die privaten Member der eigenen Klasse direkt zugreifen kann.<br />
Nur verstehe ich nicht ganz das ich im folgendene Code für den ausgabeoperator &lt;&lt; die Funktion als friend auszeichnen muss und für die funktion die bool zurückliefert und den == operator überschreibt nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostr, const ArgumentParser&amp; ap)
{
  std::string arguments = &quot;Argument Parser: &quot;;
  for(unsigned int i = 0 ; i &lt;  ap.arguments.size() ;i++){
      arguments += ap.arguments[i]-&gt;getArgument() + &quot; &quot;;
    }

  return ostr &lt;&lt;  arguments &lt;&lt; std::endl;
}
</code></pre>
<pre><code>bool NonAtomicArgument::operator==(const std::string s) const
{

    return name == s;
}
</code></pre>
<p>Schonmal danke <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="😃"
    /><br />
Ich hoffe das die Frage verständlich ist!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323038/warum-muss-das-überladen-des-lt-lt-operators-als-friend-ausgezeichnet-werden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 11:27:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323038.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Jan 2014 19:10:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 19:10:39 GMT]]></title><description><![CDATA[<p>Wie ich weiß erlaubt das zusätzliche friend im Prototyp der Klasse das eine andere Klasse auf die privaten Member der eigenen Klasse direkt zugreifen kann.<br />
Nur verstehe ich nicht ganz das ich im folgendene Code für den ausgabeoperator &lt;&lt; die Funktion als friend auszeichnen muss und für die funktion die bool zurückliefert und den == operator überschreibt nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code>std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostr, const ArgumentParser&amp; ap)
{
  std::string arguments = &quot;Argument Parser: &quot;;
  for(unsigned int i = 0 ; i &lt;  ap.arguments.size() ;i++){
      arguments += ap.arguments[i]-&gt;getArgument() + &quot; &quot;;
    }

  return ostr &lt;&lt;  arguments &lt;&lt; std::endl;
}
</code></pre>
<pre><code>bool NonAtomicArgument::operator==(const std::string s) const
{

    return name == s;
}
</code></pre>
<p>Schonmal danke <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="😃"
    /><br />
Ich hoffe das die Frage verständlich ist!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377473</guid><dc:creator><![CDATA[manusic]]></dc:creator><pubDate>Wed, 15 Jan 2014 19:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 19:12:37 GMT]]></title><description><![CDATA[<p>Das eine ist eine freie Funktion, das andere nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377474</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 15 Jan 2014 19:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 19:14:32 GMT]]></title><description><![CDATA[<p>Aber warum muss die eine Funktion frei sein un die andere nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377475</guid><dc:creator><![CDATA[manusic]]></dc:creator><pubDate>Wed, 15 Jan 2014 19:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 19:17:12 GMT]]></title><description><![CDATA[<p>cout &lt;&lt; x bedeutet, wenn es eine Methode ist, cout.operator&lt;&lt;(x). Du müsstest es also als Methode von basic_ostream definieren. Das geht aber aus naheliegenden Gründen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377476</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 15 Jan 2014 19:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 19:45:13 GMT]]></title><description><![CDATA[<p>Also ist es im ersten Falle des Ausgabeoperators so das ich den Ausgabeoperator des ostreams überlade? Und im zweiten Falle so das ich einen ==Operator definiere der vorher in der eigenen Klasse garnicht vorhanden war? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2377481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377481</guid><dc:creator><![CDATA[manusic]]></dc:creator><pubDate>Wed, 15 Jan 2014 19:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 20:13:23 GMT]]></title><description><![CDATA[<p>Operatorüberladungen sind auch nur ganz normale Funktionen. Das einzige was da dran besonderes ist, ist dass sie eine spezielle Aufrufsyntax erlauben:</p>
<pre><code>struct foo{};
void operator+(foo&amp;, foo&amp;) {};

int main
{
  foo a,b;
  operator+(a,b);
  // ist das gleiche wie
  a + b;
}
</code></pre>
<p>manusic schrieb:</p>
<blockquote>
<p>Also ist es im ersten Falle des Ausgabeoperators so das ich den Ausgabeoperator des ostreams überlade?</p>
</blockquote>
<p>Um es mal ganz genau zu formulieren: Du deklarierst eine freie Funktion, die heißt operator&lt;&lt;, die gehört zu gar keiner Klasse. Diese Funktion nimmt zwei Argumente, und zwar linksseitig eine ostream&amp; und rechtsseitig ein Objekt deiner Klasse. Die Funktion gehört aber zu keiner dieser Klassen.<br />
Da es schon eine ganze Reihe anderer Funktionen dieses Namens mit jeweils anderen Parametern gibt, hast du also eine weitere Überladung dieser Funktion hinzu gefügt.</p>
<blockquote>
<p>Und im zweiten Falle so das ich einen ==Operator definiere der vorher in der eigenen Klasse garnicht vorhanden war? <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>
</blockquote>
<p>Du deklarierst eine Memberfunktion der Klasse, die den Namen operator== hat. Wenn es vorher noch keine Memberfunktion dieser Klasse mit diesem Namen gab, dann ist sie neu, ansonsten ist es einer weitere Überladung einer Funktion dieses Namens und muss sich in ihrer Signatur von den anderen Funktion dieses Namens unterscheiden. Es ist aber durchaus möglich, mehrere Überladungen dieser Funktion zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377491</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Jan 2014 20:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 20:16:48 GMT]]></title><description><![CDATA[<p>Danke ich glaube das verstehe ich aber wäre es denn auch möglich eine Funktion mit dem &lt;&lt;operator zu schreiben die zur Klasse gehört oder macht das keinen Sinn? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377492</guid><dc:creator><![CDATA[manusic]]></dc:creator><pubDate>Wed, 15 Jan 2014 20:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Wed, 15 Jan 2014 20:19:56 GMT]]></title><description><![CDATA[<p>manusic schrieb:</p>
<blockquote>
<p>Danke ich glaube das verstehe ich aber wäre es denn auch möglich eine Funktion mit dem &lt;&lt;operator zu schreiben die zur Klasse gehört oder macht das keinen Sinn? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Doch das macht Sinn.<br />
Die Aufrufsyntax wäre in diesem Fall:</p>
<pre><code>obj.operator&lt;&lt;(arg);
</code></pre>
<p>bzw.</p>
<pre><code>obj &lt;&lt; arg;
</code></pre>
<p>Um beim ostream zu bleiben:</p>
<pre><code>foo &lt;&lt; std::cout;
</code></pre>
<p>Was dann doch eher unintuitiv ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377496</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 15 Jan 2014 20:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Warum muss das Überladen des &amp;lt;&amp;lt; Operators als friend ausgezeichnet werden? on Thu, 16 Jan 2014 00:21:57 GMT]]></title><description><![CDATA[<p>Danke ich denke ich habs soweit verstanden <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/2377528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377528</guid><dc:creator><![CDATA[manusic]]></dc:creator><pubDate>Thu, 16 Jan 2014 00:21:57 GMT</pubDate></item></channel></rss>