<?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[const correctness oder übertreibe ich es mit const?]]></title><description><![CDATA[<p>hi,</p>
<p>irgendwie habe ich immer meine liebe sorge mit der const correctness.</p>
<p>macht zum beispiel folgende funktionsdefinition sinn oder sind hier<br />
überflüssige <em>const</em> drin und wenn ja warum?</p>
<pre><code class="language-cpp">// muss hier ein konstanter zeiger auf ein konstantes objekt sein oder
// reicht ein konstanter zeiger?
const int Funktion(const char* const String)
{
  const char *Str = String; // hilft das const hier dem compiler?

  while (*Str != '\0')
  {
    const char c = *Str;    // hilft das const hier dem compiler?

    // ... was machen ...

    ++Str;
  }

  return Irgendwas;
}
</code></pre>
<p>thanx...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134444/const-correctness-oder-übertreibe-ich-es-mit-const</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 20:25:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134444.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jan 2006 08:16:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:16:32 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>irgendwie habe ich immer meine liebe sorge mit der const correctness.</p>
<p>macht zum beispiel folgende funktionsdefinition sinn oder sind hier<br />
überflüssige <em>const</em> drin und wenn ja warum?</p>
<pre><code class="language-cpp">// muss hier ein konstanter zeiger auf ein konstantes objekt sein oder
// reicht ein konstanter zeiger?
const int Funktion(const char* const String)
{
  const char *Str = String; // hilft das const hier dem compiler?

  while (*Str != '\0')
  {
    const char c = *Str;    // hilft das const hier dem compiler?

    // ... was machen ...

    ++Str;
  }

  return Irgendwas;
}
</code></pre>
<p>thanx...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976567</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:16:32 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:20:43 GMT]]></title><description><![CDATA[<p>das erste const ist schonmal überflüssig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976571</guid><dc:creator><![CDATA[const-detector]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:21:42 GMT]]></title><description><![CDATA[<p>Das const soll dir helfen und nicht dem Compiler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976572</guid><dc:creator><![CDATA[..............]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:22:00 GMT]]></title><description><![CDATA[<p>Sunday schrieb:</p>
<blockquote>
<p>und wenn ja warum?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/976573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976573</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:23:50 GMT]]></title><description><![CDATA[<p>Parameter werden sowieso als Kopie übergeben, also könntest du das zweite const im Funktionskopf weglassen - und dann direkt auf 'String' rechnen statt noch eine Kopie anzulegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976575</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 08:48:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würd's so machen:</p>
<pre><code class="language-cpp">//kein return-const, da eh by-value Rückgabe
//mir reicht's, wenn das Objekt String konstant ist, der Zeiger muss es für
//mich nicht sein
int Funktion(const char* String) {
  const char *Str = String;  //oben ham wir const, also nehm ich's hier auch

  while (*Str != '\0')  { 
    const char c = *Str;     //dito
    ++Str; 
  } 

  return Irgendwas; 
}
</code></pre>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976591</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 26 Jan 2006 08:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 09:36:12 GMT]]></title><description><![CDATA[<p>Ich würde für das plädieren:</p>
<pre><code class="language-cpp">// Rückgabe const int finde ich überflüssig - egal, was Herr Meyers sagt.
int Funktion(const char *String)
{
  // Keine Kopie von String notwendig.
  while (*String)
  {

    // ... was mit *String machen ...
    // Keine Kopie von *String notwendig 

    ++String;
  }

  return Irgendwas;
}
</code></pre>
<p>Wo mir const übrigens noch am Herzen liegt, sind Memberfunktionen... <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>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976635</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Thu, 26 Jan 2006 09:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 11:28:03 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>[...]</p>
<pre><code class="language-cpp">[...]
    const char c = *Str;     //dito
    ++Str; 
[...]
</code></pre>
<p>[...]</p>
</blockquote>
<p>Das macht &gt;irgendwie&lt; den Sinn von const zunichte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/976790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976790</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 11:28:39 GMT]]></title><description><![CDATA[<p>Vergesst mein Posting, hab mich verlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976791</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:28:39 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 11:30:57 GMT]]></title><description><![CDATA[<p>Any schrieb:</p>
<blockquote>
<p>GPC schrieb:</p>
<blockquote>
<p>[...]</p>
<pre><code class="language-cpp">[...]
    const char c = *Str;     //dito
    ++Str; 
[...]
</code></pre>
<p>[...]</p>
</blockquote>
<p>Das macht &gt;irgendwie&lt; den Sinn von const zunichte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
</blockquote>
<p>Macht es nicht; ansonsten würde es gar nicht kompilieren.<br />
Nicht der Zeiger sondern der char ist konstant (++Str != ++*Str).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976795</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 11:36:43 GMT]]></title><description><![CDATA[<p>Ich weiß zwar nicht warum du das noch weiter breitschlägst, wo ich doch direkt hinterher schon geschrieben habe, dass ich mich verlesen habe, aber wenn du es wissen willst. Ich dachte ich hätte gelesen, dass da nicht ++Str sondern ++c steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976807</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Thu, 26 Jan 2006 11:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 16:48:02 GMT]]></title><description><![CDATA[<p>Also, const ist sehr nützlich. Man soll es nicht vermeiden.<br />
Das folgende ist aber blöd:</p>
<pre><code class="language-cpp">const int f(){/*...*/}
</code></pre>
<p>Dies ist aber sehr sinnvoll:</p>
<pre><code class="language-cpp">const int&amp; f(){/*...*/}
</code></pre>
<p>Ich selbst würde immer const schreiben, wenn ich die Möglichkeit dafür habe. D.h. in 90% der Fälle. Die Wahrheit ist, dass in größeren enormen Projekten alles irritierend aussieht- man kann sehr leicht Fehler machen. Dazu gibt es const - um Fehler zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/977120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/977120</guid><dc:creator><![CDATA[khalderon]]></dc:creator><pubDate>Thu, 26 Jan 2006 16:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Thu, 26 Jan 2006 19:14:54 GMT]]></title><description><![CDATA[<p>Any schrieb:</p>
<blockquote>
<p>Ich weiß zwar nicht warum du das noch weiter breitschlägst, wo ich doch direkt hinterher schon geschrieben habe, dass ich mich verlesen habe, aber wenn du es wissen willst. Ich dachte ich hätte gelesen, dass da nicht ++Str sondern ++c steht.</p>
</blockquote>
<p>Uhrzeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/977259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/977259</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 26 Jan 2006 19:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Fri, 27 Jan 2006 12:55:21 GMT]]></title><description><![CDATA[<p>DStefan schrieb:</p>
<blockquote>
<p>Ich würde für das plädieren:</p>
<p>[cpp]<br />
// Rückgabe const int finde ich überflüssig - egal, was Herr Meyers sagt.<br />
int Funktion(const char *String)</p>
</blockquote>
<p>Ich bezweifle, dass Scott Meyers const int liefern würde, da ein Return-Value vom Typ int sowieso ein rvalue ist. Ein Konstruktion wie: Funktion() = 22 ist damit auch ohne const ausgeschlossen. Eine solche auszuschließen ist aber gerade das Hauptargument dafür Value-Rückgaben von UDTs als const zu deklarieren. Do as the ints do - quasi <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/977890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/977890</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 27 Jan 2006 12:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Fri, 27 Jan 2006 21:17:11 GMT]]></title><description><![CDATA[<p>Zdravko schrieb:</p>
<blockquote>
<p>Also, const ist sehr nützlich. Man soll es nicht vermeiden.<br />
Das folgende ist aber blöd:</p>
<pre><code class="language-cpp">const int f(){/*...*/}
</code></pre>
<p>Dies ist aber sehr sinnvoll:</p>
<pre><code class="language-cpp">const int&amp; f(){/*...*/}
</code></pre>
</blockquote>
<p>const referenzen auf build-ins sind nie sinnvoll <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/978495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978495</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 27 Jan 2006 21:17:11 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Fri, 27 Jan 2006 23:14:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// muss hier ein konstanter zeiger auf ein konstantes objekt sein oder 
// reicht ein konstanter zeiger? 
int Funktion(const char *String) 
{ 
  const char *Str = String; // hilft das const hier dem compiler? 

  while (*Str != '\0') 
  { 
    char c = *Str;    // hilft das const hier dem compiler? 

    // ... was machen ... 

    ++Str; 
  } 

  return Irgendwas; 
}
</code></pre>
<p>das const vor dem int-rückgabetyp der funktion ist überflüssig, weil die zuweisung Funktion(&quot;...&quot;)=0 bei einfachen typen sowieso nicht geht. und methodenaufrufe schon garnicht. würde ein objekt zurückgegeben werden, dann wäre das was anderes.</p>
<p>das const zwischen char* und String in der argumentenliste soll wohl bedeuten, daß String auf eine constante zeigt (kA <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    />). also, ich bin bis jetzt immer ohne so nen firlefanz ausgekommen. das bringt wohl nichts. bereits das erste const bewirkt, daß du auf String nur lesend zugreifen kannst.</p>
<p>das const vor char c=Str ist auch übertrieben. es würde zwar sicherstellen, daß c nicht verändert werden kann, das wäre aber bei einer lokalen hilfsvariable total übertrieben.</p>
<p>nur das const in const char *String ist sinnvoll. dadurch wird es möglich, die funktion auch mit stringkonstanten aufzurufen. ohne dieses const würde Funktion(&quot;Hallo&quot;) einen compilerfehler liefern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/978597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/978597</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Fri, 27 Jan 2006 23:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to const correctness oder übertreibe ich es mit const? on Mon, 30 Jan 2006 08:14:03 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>const referenzen auf build-ins sind nie sinnvoll <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>
</blockquote>
<p>Klar sind sie das (besonders wenn du beim Schreiben nicht weißt, ob dort ein built-in oder eine class kommen wird - Strichwort &quot;Template&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/980710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/980710</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Jan 2006 08:14:03 GMT</pubDate></item></channel></rss>