<?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]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir jemand sagen was ich bei folgendem Code falsch mache? Irgendwie stimmt der Übergabeparameter der Funktion die den Operator &quot;!&quot; überlädt nicht. Verstehe ich aber nicht so ganz denn in &quot;Name&quot; steht ja genau das drin was ich löschen möchte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

class frau
{
	string Name;

public:
	frau(string name) : Name(name) { }
	friend class mann;
};

class mann
{
	string Name;
public:
	mann(string name) : Name(name) { }

	string operator+(frau &amp;f)
	{
		Name += &quot;-&quot; + f.Name;
		f.Name = Name + &quot;-&quot; + f.Name;
		return Name;
	}

	string operator!(Name)
	{
		Name.erase(Name.find('-'));
		return Name;
	}
};

int main(int argc, char **argv)
{
	mann Mann(&quot;Meier&quot;);
	frau Frau(&quot;Huber&quot;);

	cout &lt;&lt; Mann + Frau &lt;&lt; endl;

	cout &lt;&lt; !Mann &lt;&lt; endl;

	system(&quot;Pause&quot;);
	return 0; 
}
</code></pre>
<p>Danke schonmal für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258732/operatorüberladung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 03:05:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258732.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Jan 2010 13:23:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 13:23:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir jemand sagen was ich bei folgendem Code falsch mache? Irgendwie stimmt der Übergabeparameter der Funktion die den Operator &quot;!&quot; überlädt nicht. Verstehe ich aber nicht so ganz denn in &quot;Name&quot; steht ja genau das drin was ich löschen möchte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

class frau
{
	string Name;

public:
	frau(string name) : Name(name) { }
	friend class mann;
};

class mann
{
	string Name;
public:
	mann(string name) : Name(name) { }

	string operator+(frau &amp;f)
	{
		Name += &quot;-&quot; + f.Name;
		f.Name = Name + &quot;-&quot; + f.Name;
		return Name;
	}

	string operator!(Name)
	{
		Name.erase(Name.find('-'));
		return Name;
	}
};

int main(int argc, char **argv)
{
	mann Mann(&quot;Meier&quot;);
	frau Frau(&quot;Huber&quot;);

	cout &lt;&lt; Mann + Frau &lt;&lt; endl;

	cout &lt;&lt; !Mann &lt;&lt; endl;

	system(&quot;Pause&quot;);
	return 0; 
}
</code></pre>
<p>Danke schonmal für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838760</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Thu, 14 Jan 2010 13:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 13:28:11 GMT]]></title><description><![CDATA[<p>Ein Blick nach &quot;Die Artikel&quot; lohnt sich immer:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html</a><br />
Alles zum Thema operatoren überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838767</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Thu, 14 Jan 2010 13:28:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 13:31:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">string operator!(Name)
</code></pre>
<p>Name ist kein Typ -&gt; Die Typangabe fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838771</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 14 Jan 2010 13:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 13:47:33 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string operator!(Name)
</code></pre>
<p>Name ist kein Typ -&gt; Die Typangabe fehlt.</p>
</blockquote>
<p>Kann man denn operator! auch binär überladen? Das wäre dann eher operator!=, und der gibt 1) nen bool zurück und 2) nimmt der normalerweise den selben Klassentyp als Parameter entgegen:</p>
<pre><code class="language-cpp">bool Type::operaor!=(const Type&amp; other) const
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1838791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838791</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Thu, 14 Jan 2010 13:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 14:12:29 GMT]]></title><description><![CDATA[<p>Also wenn ich schreibe</p>
<pre><code class="language-cpp">string operator!(string Name)
</code></pre>
<p>bekomme ich den Fehler</p>
<pre><code>Der unaere Operator '!' hat zu viele formale Parameter
</code></pre>
<p>Das ist dann wohl auch das Problem das l'abra d'or angesprochen hat.</p>
<p>Ich habe mir den Link gerade angeschaut, aber damit kann ich nicht so viel anfangen ehrlich gesagt.</p>
<p>Das war eine Prüfungsaufgabe die den Methodenkörper vorgegeben hat. Die Aufgabe hieß dann &quot;überladen Sie den !-Operator so dass ein Name wieder gelöscht wird&quot;. In einer zweiten Aufgabe war dann der Aufruf abgefragt. Ich dachte eben dass es so funktioniert, aber jetzt komme ich nicht mehr weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838811</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Thu, 14 Jan 2010 14:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 14:14:03 GMT]]></title><description><![CDATA[<p>Lass den Parameter einfach weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838815</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 14 Jan 2010 14:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 14:18:33 GMT]]></title><description><![CDATA[<p>Hey, Super, das klappt. Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838821</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Thu, 14 Jan 2010 14:18:33 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 14:24:28 GMT]]></title><description><![CDATA[<p>Du hast die Funktion zur Operatorüberladung in der Klasse definiert. Deshalb brauchst du keine Parameter bei unären Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838832</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 14 Jan 2010 14:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 15:04:18 GMT]]></title><description><![CDATA[<p>Und bei + brauche ich Parameter weil es ein binärer Operator ist, oder?<br />
Aber warum wird dann nur ein Parameter benötigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838857</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Thu, 14 Jan 2010 15:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 15:13:11 GMT]]></title><description><![CDATA[<p>laura84 schrieb:</p>
<blockquote>
<p>Und bei + brauche ich Parameter weil es ein binärer Operator ist, oder?<br />
Aber warum wird dann nur ein Parameter benötigt?</p>
</blockquote>
<p>Wenn du einen Operator als eine Klassenmember implementierst, wird der erste Parameter implizit mitgegeben. (Der des aktuellen Objektes natürlich).</p>
<p>Unär: erwartet einen Parameter. Wirkt also direkt auf das Objekt.<br />
Binär: erwartet 2 Parameter. Erster Parameter ist das Objekt selbst und das zweite musst du angeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838865</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 14 Jan 2010 15:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 15:13:28 GMT]]></title><description><![CDATA[<p>Weil der erste Parameter die Klasse bzw das Objekt selbst ist.</p>
<p>Würdest du den Operator außerhalb der Klasse stellen, würdest du wieder beide Operatoren angeben müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838866</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 14 Jan 2010 15:13:28 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 15:17:18 GMT]]></title><description><![CDATA[<p>Dein Code ist also ziemlich patriarchalisch <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/1838874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838874</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 14 Jan 2010 15:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Thu, 14 Jan 2010 15:46:44 GMT]]></title><description><![CDATA[<p>Okay, vielen Dank an euch alle. Wieder mal was dazu gelernt. <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/1838894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838894</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Thu, 14 Jan 2010 15:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorüberladung on Fri, 15 Jan 2010 21:45:51 GMT]]></title><description><![CDATA[<p>Ich finde es noch wichtig zu sagen, dass es eher üblich ist, binäre Operatoren wie <code>+</code> ausserhalb der Klasse, also als freie Funktionen zu implementieren. Warum, erfährst du im Link von l'abra d'or. Lies den Artikel, dort stehen wertvolle Informationen und Best Practices drin!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839533</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 15 Jan 2010 21:45:51 GMT</pubDate></item></channel></rss>