<?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[unsigned int operator und int operator das gleiche ?]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich bin gerade auf folgenden Code im Buch gestossen:</p>
<pre><code>// String9.cpp
#include &lt;iostream&gt;
#include &lt;cstring&gt;
#include &lt;cstdlib&gt;
#include &lt;cstdio&gt;
using namespace std;

class String {
   private:
   char *buffer;
   unsigned int len;

   public:
   // Konstruktoren
   String( const char* s=&quot;&quot;) {
      len = strlen(s);
      buffer = new char [len+1];
      strcpy( buffer, s );
   }
   // Destruktor
   ~String() { delete [] buffer; }
   // Zugriffsmethdoe
   char* get_String() const { return buffer; }
   // String -&gt; int 
   operator unsigned int() const {
      return len;
   }
};

int main( void ) {
   String string1(&quot;Test-String&quot;); 
   int laenge = string1;
   cout &lt;&lt; &quot;Anzahl Zeichen in string1: &quot; &lt;&lt; laenge &lt;&lt; &quot;\n&quot;;
   return 0;
}
</code></pre>
<p>Hier wird der Operator unsigned int() in der Klasse String ueberladen... richtig ?<br />
Wieso wird in der main() funktion die int-Variable <strong>laenge</strong> automatisch in unsigned int konvertiert ?</p>
<p>Also war der Konvertierungsvorgang wie folgt, oder ?<br />
int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> unsinged int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> String laenge</p>
<p>Wenn ja wie weiss der Standardkonvertierungskonstruktor das so konvertiert werden muss?</p>
<p>Gruss</p>
<p>THE-E</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266582/unsigned-int-operator-und-int-operator-das-gleiche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 04:16:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266582.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 May 2010 08:31:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 08:31:29 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich bin gerade auf folgenden Code im Buch gestossen:</p>
<pre><code>// String9.cpp
#include &lt;iostream&gt;
#include &lt;cstring&gt;
#include &lt;cstdlib&gt;
#include &lt;cstdio&gt;
using namespace std;

class String {
   private:
   char *buffer;
   unsigned int len;

   public:
   // Konstruktoren
   String( const char* s=&quot;&quot;) {
      len = strlen(s);
      buffer = new char [len+1];
      strcpy( buffer, s );
   }
   // Destruktor
   ~String() { delete [] buffer; }
   // Zugriffsmethdoe
   char* get_String() const { return buffer; }
   // String -&gt; int 
   operator unsigned int() const {
      return len;
   }
};

int main( void ) {
   String string1(&quot;Test-String&quot;); 
   int laenge = string1;
   cout &lt;&lt; &quot;Anzahl Zeichen in string1: &quot; &lt;&lt; laenge &lt;&lt; &quot;\n&quot;;
   return 0;
}
</code></pre>
<p>Hier wird der Operator unsigned int() in der Klasse String ueberladen... richtig ?<br />
Wieso wird in der main() funktion die int-Variable <strong>laenge</strong> automatisch in unsigned int konvertiert ?</p>
<p>Also war der Konvertierungsvorgang wie folgt, oder ?<br />
int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> unsinged int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> String laenge</p>
<p>Wenn ja wie weiss der Standardkonvertierungskonstruktor das so konvertiert werden muss?</p>
<p>Gruss</p>
<p>THE-E</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895533</guid><dc:creator><![CDATA[THE-E]]></dc:creator><pubDate>Tue, 11 May 2010 08:31:29 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 08:39:41 GMT]]></title><description><![CDATA[<p>THE-E schrieb:</p>
<blockquote>
<p>Hier wird der Operator unsigned int() in der Klasse String ueberladen... richtig ?</p>
</blockquote>
<p>Korrekt.</p>
<blockquote>
<p>Wieso wird in der main() funktion die int-Variable <strong>laenge</strong> automatisch in unsigned int konvertiert ?</p>
</blockquote>
<p>Wird nicht gemacht. Der Compiler sieht, dass man einen String in einen int konvertieren möchte und schaut was da so alles im Angebot ist. Das ist zu einen die nutzerdefinierte Konvertierung von String nach unsigned int, zum Anderen die eingebaute Konvertierung von unsigned int nach int. Beides bastelt der Compiler von sich aus zusammen. Das geht, weil nur eine nutzerdefinierte Konvertierung dabei ist, bei zweien dürfte er das nicht. Ein wunderbares Beispiel warum man solche Konvertierungsoperatoren nicht leichtfertig einbauen sollte - man wird oft überrascht von dem was der Compiler unte der Haube alles anstellt.</p>
<blockquote>
<p>Also war der Konvertierungsvorgang wie folgt, oder ?<br />
int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> unsinged int laenge <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> String laenge</p>
</blockquote>
<p>Nein, komplett andersrum. Dem int wird was zugewiesen, das heißt, der String muss irgendwie in einen int-Wert konvertiert werden, nicht andersrum!</p>
<blockquote>
<p>Wenn ja wie weiss der Standardkonvertierungskonstruktor das so konvertiert werden muss?</p>
</blockquote>
<p>hat nichts mit Konstruktoren zu tun, nur mit dem Operator den du selbst angeboten hast</p>
<p>PS: eine const-methode anzubieten, die einen nicht-konstanten Zeiger auf die Klasseninterna anbietet ist mehr als böse. Steht das wirklich so im Buch? Dann schmeiß es weg und sag welches das ist - damit wir allen Neulingen davon abraten können. Das zusammen mit einem so sinnfreien Konvertierungsoperator ist ziemlicher Müll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895536</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 08:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 08:41:26 GMT]]></title><description><![CDATA[<p>DAs was ich jetzt sage sind reine Vermutungen.</p>
<p>Sofern folgendes geht:</p>
<pre><code class="language-cpp">int i;
unsigned int ui;
i = ui
</code></pre>
<p>das ist ein impliziter Cast. Der Compiler castet also ein unsigned int automatisch in ein normales int</p>
<p>Der von dir Beschriebene Operator ist ein &quot;Impliziter Cast&quot;<br />
der wird ausgeführt wenn vor einen = mit der Klasse eine andere klasse steht.</p>
<p>Damit lässt sich der Cast auflösen:<br />
-&gt;Compiler schaut ob er String in ein int casten kann<br />
-&gt;da dies nicht geht schaut er ob er String auf etwas Casten kann was er in einen späteren Schritt in ein int Casten kann.<br />
-&gt;Hier wird er fündig und castet in unsigned int<br />
Kurzum er castet den String über den Operator in ein unsigned int und dieses dann auf ein int.</p>
<p>So könnte ich mir es vorstellen. Ich denke aber das hier zumindest eine Warnung fällig wäre da man ja ggf falsche Wert in Length hat wenn die Grenzwerte überschritten werden (wenn das unsigned zu groß wird, wird wohl im signed Bereich eine negative Zahl auftauchen). Wie schon gesagt, so würde ich vermuten das es funktioniert. Am meisten lernt man wohl wenn man das ganze ausprobiert und schaut was passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895539</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Tue, 11 May 2010 08:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 09:13:32 GMT]]></title><description><![CDATA[<p>Erstmal danke fuer die hilfreichen Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>pumuckl schrieb:</p>
<blockquote>
<blockquote>
<p>Wenn ja wie weiss der Standardkonvertierungskonstruktor das so konvertiert werden muss?</p>
</blockquote>
<p>hat nichts mit Konstruktoren zu tun, nur mit dem Operator den du selbst angeboten hast</p>
</blockquote>
<p>Hier im Buch geht es aber um Konvertierungskonstruktoren. Ich zitiere vom Buch:</p>
<p>C++ von A bis Z schrieb:</p>
<blockquote>
<p>Hinter dem Begriff Konvertierungskonstruktor verbirgt sich nichts anders als ein Konstruktor mit Parametern. Somit ist also jeder Konstruktor, den Sie bisher mit Parametern verwendet haben, ein Konvertierungskonstruktor - mit Ausnahme des Kopierkonstruktors.</p>
</blockquote>
<p>Oder bringe ich da was durcheinander ?<br />
Wie nennt man denn den Vorgang der das implizit macht ?</p>
<blockquote>
<p>PS: eine const-methode anzubieten, die einen nicht-konstanten Zeiger auf die Klasseninterna anbietet ist mehr als böse. Steht das wirklich so im Buch? Dann schmeiß es weg und sag welches das ist - damit wir allen Neulingen davon abraten können. Das zusammen mit einem so sinnfreien Konvertierungsoperator ist ziemlicher Müll.</p>
</blockquote>
<p>Also das Buch heisst &quot;<strong>C++ von A bis Z(2.Auflage) - Galileo Computing</strong>&quot;. Bis jetzt war ich eigentlich damit zufrieden. Also den Code habe ich nicht bearbeitet, ist direkt von der CD.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895558</guid><dc:creator><![CDATA[THE-E]]></dc:creator><pubDate>Tue, 11 May 2010 09:13:32 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 09:55:20 GMT]]></title><description><![CDATA[<p>THE-E schrieb:</p>
<blockquote>
<p>Hier im Buch geht es aber um Konvertierungskonstruktoren. Ich zitiere vom Buch:</p>
<p>C++ von A bis Z schrieb:</p>
<blockquote>
<p>Hinter dem Begriff Konvertierungskonstruktor verbirgt sich nichts anders als ein Konstruktor mit Parametern. Somit ist also jeder Konstruktor, den Sie bisher mit Parametern verwendet haben, ein Konvertierungskonstruktor - mit Ausnahme des Kopierkonstruktors.</p>
</blockquote>
<p>Oder bringe ich da was durcheinander ?</p>
</blockquote>
<p>Deine Frage bezog sich aber nicht auf einen Konvertierungskonstruktor, sondern auf einen Konvertierungsoperator, nämlich den <code>operator unsigned int()</code> . Konvertierungskonstruktoren sind übrigens nur Konstruktoren, die genau einen Parameter nehmen. Dein const char*- Konstruktor ist also einer. Allerdings gings ja nicht um den.</p>
<blockquote>
<p>Wie nennt man denn den Vorgang der das implizit macht ?</p>
</blockquote>
<p>Implizite Konvertierung <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/1895559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895559</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 09:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 09:47:29 GMT]]></title><description><![CDATA[<p>THE-E schrieb:</p>
<blockquote>
<p>Hier im Buch geht es aber um Konvertierungskonstruktoren. Ich zitiere vom Buch:</p>
<p>C++ von A bis Z schrieb:</p>
<blockquote>
<p>Hinter dem Begriff Konvertierungskonstruktor verbirgt sich nichts anders als ein Konstruktor mit Parametern. Somit ist also jeder Konstruktor, den Sie bisher mit Parametern verwendet haben, ein Konvertierungskonstruktor - mit Ausnahme des Kopierkonstruktors.</p>
</blockquote>
</blockquote>
<p>Und schon wieder ein Fall, wo das A-Z-Buch negativ auffällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895586</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 11 May 2010 09:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 11:39:49 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>THE-E schrieb:</p>
<blockquote>
<p>Hier im Buch geht es aber um Konvertierungskonstruktoren. Ich zitiere vom Buch:</p>
<p>C++ von A bis Z schrieb:</p>
<blockquote>
<p>Hinter dem Begriff Konvertierungskonstruktor verbirgt sich nichts anders als ein Konstruktor mit Parametern. Somit ist also jeder Konstruktor, den Sie bisher mit Parametern verwendet haben, ein Konvertierungskonstruktor - mit Ausnahme des Kopierkonstruktors.</p>
</blockquote>
</blockquote>
<p>Und schon wieder ein Fall, wo das A-Z-Buch negativ auffällt.</p>
</blockquote>
<p>Wieso genau ?</p>
<p>Ich glaub das war eher mein Fehler. Im Beispiel oben also Thread-Topic ging es um Konvertierungsfunktion, nicht um Konvertierungskonstrukturen. Ich habe das uebersehen, daher auch bei mir die Verwirrung.<br />
Also ICH habe den Themenwechsel uebersehen und faelschlicherweise gedacht es ginge um Konvertierungskonstrukturen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895637</guid><dc:creator><![CDATA[THE-E]]></dc:creator><pubDate>Tue, 11 May 2010 11:39:49 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 11:36:18 GMT]]></title><description><![CDATA[<p>THE-E schrieb:</p>
<blockquote>
<p>Wieso genau ?</p>
</blockquote>
<p>Weil das klingt, als seien<br />
&quot;Konvertierungskonstruktor&quot;<br />
und<br />
&quot;Konstruktor mit Parametern&quot;<br />
das selbe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895638</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 11 May 2010 11:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 11:42:09 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>THE-E schrieb:</p>
<blockquote>
<p>Wieso genau ?</p>
</blockquote>
<p>Weil das klingt, als seien<br />
&quot;Konvertierungskonstruktor&quot;<br />
und<br />
&quot;Konstruktor mit Parametern&quot;<br />
das selbe.</p>
</blockquote>
<p>Ah ok verstehe, aber ist dies dann nicht der Fall ? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1895641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895641</guid><dc:creator><![CDATA[THE-E]]></dc:creator><pubDate>Tue, 11 May 2010 11:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 11:46:54 GMT]]></title><description><![CDATA[<p>Ich würde nur die Konstruktoren Konvertierungskonstruktoren nennen, die genau einen Parameter haben, aber nicht mehr als einen (, wie pumuckl vorhin auch geschrieben hat).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895643</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 11 May 2010 11:46:54 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 13:53:20 GMT]]></title><description><![CDATA[<p>Zudem würde ich <code>explicit</code> -Konstruktoren von Konvertierungskonstruktoren ausschliessen. Der folgende ist für mich kein Aufruf eines Konvertierungskonstruktors:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vec(7);
</code></pre>
<p>Und falls ein Konstruktor nicht <code>explicit</code> ist und mehrere Parameter hat, von denen der zweite bis letzte Defaultwerte besitzen, kann man auch von Konvertierungskonstruktor sprechen. Nur gibts das relativ selten...</p>
<pre><code class="language-cpp">class MyClass
{
    public:
        MyClass(int i, double d = 5.0);
};

MyClass obj = 3;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1895759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895759</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 11 May 2010 13:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 16:30:04 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Zudem würde ich <code>explicit</code> -Konstruktoren von Konvertierungskonstruktoren ausschliessen. Der folgende ist für mich kein Aufruf eines Konvertierungskonstruktors:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vec(7);
</code></pre>
</blockquote>
<p>Ja, damits eine Typumwandlung wird, muß man es deutlicher hinschreiben.</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vec=static_cast&lt;std::vector&lt;int&gt; &gt;(7);
</code></pre>
<p><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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895863</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 11 May 2010 16:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 17:58:31 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ich würde nur die Konstruktoren Konvertierungskonstruktoren nennen, die genau einen Parameter haben, aber nicht mehr als einen (, wie pumuckl vorhin auch geschrieben hat).</p>
</blockquote>
<p>Und nicht <em>explicit</em> sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895907</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 11 May 2010 17:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to unsigned int operator und int operator das gleiche ? on Tue, 11 May 2010 19:17:37 GMT]]></title><description><![CDATA[<p>THE-E schrieb:</p>
<blockquote>
<p>ich bin gerade auf folgenden Code im Buch gestossen:</p>
<pre><code>... grauenhafter Code ...
</code></pre>
</blockquote>
<p><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>
<p>THE-E schrieb:</p>
<blockquote>
<p>Also das Buch heisst &quot;C++ von A bis Z(2.Auflage) - Galileo Computing&quot;</p>
</blockquote>
<p>Aha. Das Buch scheint nicht viel zu taugen -- es sei denn, die &quot;Macken&quot; sind absichtlich dort, zu Lehrzwecken / als Negativbeispiel.</p>
<p>Kopierkonstruktor und Zuweisungsoperator fehlen. Das führt unweigerlich zu Speicherlecks und/oder Destruktoren, die denselben Speicherblock mehr als einmal freigeben wollen.</p>
<p>Der Konvertierungsoperator ist ziemlich Banane. Konvertierungen sollten den Sinn des Werts erhalten, der von einem Typ zum anderen konvertiert wird. Zeichenketten haben nicht viel mit Ganzzahlen zu tun. Ja, die Länge einer Zeichenkette ist eine Ganzzahle. Dafür kann man ja auch eine size oder length Methode anbieten. Aber als Konvertierungsoperator ist das unpassend.</p>
<p>Const-Correctness wird verletzt. Die folgende Funktion kann einen &quot;konstanten&quot; String verändern, wobei sie es eigentlich nicht dürfen sollte:</p>
<pre><code class="language-cpp">void const_incorrect(String const&amp; s)
{
  int l = s; // mit-den-Augen-roll
  char* p = s.get_String(); // legal, da get_String const ist
  if (l&gt;0) {
    p[0] = 'X'; // Oops! Ich habe einen &quot;konstanten&quot; String geändert.
  }
}
</code></pre>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895939</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 11 May 2010 19:17:37 GMT</pubDate></item></channel></rss>