<?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[Überladung Eingabeoperator Deklaration innerhalb der Klasse? -GELÖST-]]></title><description><![CDATA[<p>Angenommen, man möchte den Ein/Ausgabeoperator für eine Klasse überladen,<br />
macht es Sinn, die Deklaration in der Klasse durchzuführen oder sollte man das ausserhalb der Klasse machen?</p>
<p>Wenn die Frage nicht verständlich genug ist, kann ich gerne ein Beispiel geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297366/überladung-eingabeoperator-deklaration-innerhalb-der-klasse-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 11:56:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297366.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Dec 2011 20:56:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladung Eingabeoperator Deklaration innerhalb der Klasse? -GELÖST- on Sun, 25 Dec 2011 21:13:03 GMT]]></title><description><![CDATA[<p>Angenommen, man möchte den Ein/Ausgabeoperator für eine Klasse überladen,<br />
macht es Sinn, die Deklaration in der Klasse durchzuführen oder sollte man das ausserhalb der Klasse machen?</p>
<p>Wenn die Frage nicht verständlich genug ist, kann ich gerne ein Beispiel geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160921</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Sun, 25 Dec 2011 21:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Überladung Eingabeoperator Deklaration innerhalb der Klasse? -GELÖST- on Sun, 25 Dec 2011 21:09:14 GMT]]></title><description><![CDATA[<p>Innerhalb der Klasse (also als Methode) wird nicht gehen, weil bei solchen Operationen per Konvention das Stream-Objekt auf der linken Seite erwartet wird.</p>
<pre><code class="language-cpp">std::cin &gt;&gt; obj;
</code></pre>
<p>kann nur auf zwei Arten funktionieren:</p>
<pre><code class="language-cpp">std::cin.operator&gt;&gt;(obj); // oder
operator&gt;&gt;(std::cin, obj);
</code></pre>
<p>Da du basic_[io]stream nicht ändern kannst, bleibt nur die freie Funktion übrig. Jetzt könnte man die Deklaration zwar per friend in die Klassendeklaration hineinziehen, aber sofern keine guten Gründe bestehen, die Kapselung auf diese Weise aufzubrechen, sollte man von friend eher Abstand nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160925</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 25 Dec 2011 21:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to Überladung Eingabeoperator Deklaration innerhalb der Klasse? -GELÖST- on Mon, 26 Dec 2011 00:19:28 GMT]]></title><description><![CDATA[<p>Also Kapselung aufbrechen ist in diesem Fall etwas krass formuliert finde ich. Es handelt sich dabei ja um genau eine Funktion, die sowieso relativ eng mit der Klasse verbunden ist.</p>
<p>Ich bin aber aus einem anderen Grund der Meinung, dass friend hier meistens nicht angebracht sein wird:<br />
Wenn eine Stream-Ausgabe-Funktion etwas ausgeben soll, was nicht (oder nur umständlich) über das öffentliche Interface der Klasse ermittelt werden kann, dann riecht das für mich etwas fischig.<br />
Es wird Fälle geben wo das OK ist/Sinn macht, aber ich denke es wird eher die Ausnahme bleiben.</p>
<p>Und so lange man etwas genau so gut ohne friend implementieren kann wie mit, kann man auf das friend wohl auch verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2160969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2160969</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 26 Dec 2011 00:19:28 GMT</pubDate></item></channel></rss>