<?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[Frage zur überladung von Operatoren]]></title><description><![CDATA[<p>Hallo,</p>
<p>können Operatoren für Standarddatentypen wie <code>unsigned int</code> nicht überladen werden?<br />
Ich bekomme nämlich bei so etwas einen Fehler:</p>
<pre><code class="language-cpp">bool operator&lt; (unsigned int int1, unsigned int int2) {
// ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/247830/frage-zur-überladung-von-operatoren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 09:07:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247830.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Aug 2009 11:39:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 11:39:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>können Operatoren für Standarddatentypen wie <code>unsigned int</code> nicht überladen werden?<br />
Ich bekomme nämlich bei so etwas einen Fehler:</p>
<pre><code class="language-cpp">bool operator&lt; (unsigned int int1, unsigned int int2) {
// ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1761661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761661</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 16 Aug 2009 11:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 11:41:28 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>können Operatoren für Standarddatentypen wie <code>unsigned int</code> nicht überladen werden?</p>
</blockquote>
<p>Nein, das geht nicht. Dafür muss mindestens ein benutzerdefinierter Typ involviert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761664</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sun, 16 Aug 2009 11:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 12:18:27 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>können Operatoren für Standarddatentypen wie <code>unsigned int</code> nicht überladen werden?<br />
Ich bekomme nämlich bei so etwas einen Fehler:</p>
<pre><code class="language-cpp">bool operator&lt; (unsigned int int1, unsigned int int2) {
// ...
}
</code></pre>
</blockquote>
<p>Das geht nicht und das ist auch gut so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761689</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Sun, 16 Aug 2009 12:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 12:47:51 GMT]]></title><description><![CDATA[<p>Warum ist das gut?</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761706</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Sun, 16 Aug 2009 12:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 12:49:09 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Warum ist das gut?</p>
</blockquote>
<p>Weil Stroustrup gesagt hat, daß er das absichtlich verboten hat, um Mißbrauch vorzubeugen.<br />
Ich finde es nicht gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761707</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Aug 2009 12:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 12:59:04 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ich finde es nicht gut.</p>
</blockquote>
<p>Gibt es bei dir Fälle, in denen du eine Überladung der BuiltIn-Operatoren benötigt hättest?</p>
<p>Ich finde es nicht schlecht, so wie es ist. Wenn man sich nicht einmal mehr auf die Operatoren der einfachen Typen verlassen kann, entsteht meiner Meinung nach schnell ziemliche Verwirrung. Besonders wenn man anderen Code bearbeitet und in irgendeinem entfernten Header mal eben die Semantik einer <code>int</code> -Addition neu implementiert wurde.</p>
<p>Davon abgesehen: Wie sollte man die Operatoren überhaupt implementieren, wenn man sie neu definiert? Auf die Standardversion kann man dann wahrscheinlich nicht mehr zugreifen. Also über Bitoperationen? Und wenn die auch überladen sind, über Assembler?</p>
<p>Zusammen mit der Tatsache, dass man sich sehr schnell benutzerdefinierte Typen mit eigener Semantik bauen kann, finde ich gut, dass die Operatoren für skalare Typen unverändert bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761711</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 16 Aug 2009 12:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 17:52:34 GMT]]></title><description><![CDATA[<p>Gibt es bei dir Fälle, in denen du eine Überladung der BuiltIn-Operatoren benötigt hättest? Natürlich. Zu Meßzwecken.<br />
Ich kann mir außerdem gut vorstellen, daß es zur Firmenpolitik gehört, daß keine versehentlichen Interger-Überläufe geschehen dürfen. Mit der Erlaubnis, diese Operatoren zu überladen, könnte man das absichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761875</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Aug 2009 17:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 18:01:18 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ich kann mir außerdem gut vorstellen, daß es zur Firmenpolitik gehört, daß keine versehentlichen Interger-Überläufe geschehen dürfen. Mit der Erlaubnis, diese Operatoren zu überladen, könnte man das absichern.</p>
</blockquote>
<p>Das wäre sicher nicht schlecht. Aber die skalaren Typen haben auch sonst einige Unsicherheiten, zum Beispiel die implizite Konvertierung. Oder die Vermischung von <code>unsigned</code> und <code>signed</code> , die auch darunter fällt.</p>
<p>Es scheint vielleicht umständlich, aber in Fällen, wo solche Dinge wirklich wichtig sind, wäre doch das Naheliegendste, die Typen über Klassen zu wrappen und eigene Semantiken zu implementieren...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761878</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 16 Aug 2009 18:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Sun, 16 Aug 2009 19:16:04 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Es scheint vielleicht umständlich, aber in Fällen, wo solche Dinge wirklich wichtig sind, wäre doch das Naheliegendste, die Typen über Klassen zu wrappen und eigene Semantiken zu implementieren...?</p>
</blockquote>
<p>Auch damit habe ich experimentiert. Aber ich hatte es nichtmal Ansatzweise geschafft, das durchzuhalten. Dauernd will die WinAPI dann doch Zeiger auf elementare Typen und so. Oder C++ selber mag bestimmte Typen, zum Beispiel als Arrayindex. Wird man dann schwach und macht</p>
<pre><code class="language-cpp">int Int::operator int()
</code></pre>
<p>weicht man sein Konzept wieder auf und kommt in Teufels Küche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1761905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1761905</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 Aug 2009 19:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:06:22 GMT]]></title><description><![CDATA[<p>Hmm, stimmt, das ist schwer konsequent durchzuziehen. Gerade auch wenn man mit bestimmten Schnittstellen (z.B. von externen Bibliotheken, aber auch der StdLib) zusammenarbeitet, muss man trotzdem immer wieder die skalaren Typen verwenden. Ein ständiges <code>ToInt()</code> oder ähnliches ist auf Dauer wahrscheinlich zu ätzend, auch wenn es wohl die sicherste Möglichkeit darstellt.</p>
<p>Was man tun könnte, ist nur für die &quot;kritischen&quot; Fälle – vor allem bei komplexeren Berechnungen, wo schnell Überläufe passieren – zu solchen Hilfsmitteln zu greifen. Bibliotheken wie <em>Boost.Numeric/Conversion</em> unterstützen einen ebenfalls im Kampf gegen solche Fehler.</p>
<p>Ich denke, Stroustrups Entscheid ist schon nicht ganz so daneben. Klar hätte es ein paar nette Vorteile, selbst zu überladen, aber im Vergleich zu den dadurch entstehenden Problemen scheinen die mir nicht sehr relevant. Ich will mir nicht vorstellen, wie sehr man beim Debugging verzweifeln kann, wenn einfache Anweisungen wie <code>3 + 5</code> nicht mehr nachvollziehbar sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762367</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:19:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich denke, Stroustrups Entscheid ist schon nicht ganz so daneben.</p>
</blockquote>
<p>Denke ich auch.<br />
Ich stelle mir nur mal vor, ich überlade den op+(int,int), damit er Überläufe assertet und inkludiere tollelib/tools/random.hpp, aua!<br />
so eine überladung wäre auch irgendwie wie die redefinierung des globalen new() und müßte überall ziehen, oder? aber das wird nix, denn die ganzen anderen übersetzungseinheiten, wissen davon erstmal nichts. alles ganz komisch und ist wohl den aufwand nicht wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762379</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:41:51 GMT]]></title><description><![CDATA[<p>Nur so ein Gedanke nebenbei. Angenommen wir könnten z.B.</p>
<pre><code class="language-cpp">int operator+(int, int) { ... }
</code></pre>
<p>schreiben. Wie würden wir eigentlich den Funktionskörper zu schrieben haben ohne uns in Rekursion zu verlieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762394</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:43:25 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Nur so ein Gedanke nebenbei. Angenommen wir könnten z.B.</p>
<pre><code class="language-cpp">int operator+(int, int) { ... }
</code></pre>
<p>schreiben. Wie würden wir eigentlich den Funktionskörper zu schrieben haben ohne uns in Rekursion zu verlieren?</p>
</blockquote>
<p>Auf Bitmanipulation? Inline Assembler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762398</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:43:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:48:52 GMT]]></title><description><![CDATA[<p>Das war auch einer meiner Kritikpunkte (wenn auch eher angedeutet). Mir fielen da wie gesagt Operationen ein, die mehr &quot;Low-Level&quot; wären, aber das kann ja nicht der Weisheit letzter Schluss sein...</p>
<p>Edit: Das ist eben das Problem:</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Auf Bitmanipulation?</p>
</blockquote>
<p>Wenn die entsprechenden Operatoren auch überladen sind?</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Inline Assembler?</p>
</blockquote>
<p>Nicht wirklich plattformunabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762402</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:48:10 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Auf Bitmanipulation?</p>
</blockquote>
<p>und wenn die auch überladen werden?</p>
<blockquote>
<p>Inline Assembler?</p>
</blockquote>
<p>Was letztlich undefiniertes Verhalten bedeutet, denn die abstrakte Maschine für C++ kennt keinen Assembler. Halte ich daher für keinen günstigen Ausweg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762405</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur überladung von Operatoren on Mon, 17 Aug 2009 14:52:43 GMT]]></title><description><![CDATA[<p>Klar, WENN. <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="😉"
    /><br />
Aber ich habe nicht die Überladung von + unterstützt, sondern lediglich Alternativen genannt. Ob das so viel Sinn macht sei dahingestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762408</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 17 Aug 2009 14:52:43 GMT</pubDate></item></channel></rss>