<?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[String-Klasse - operator[]]]></title><description><![CDATA[<p>Hallo,<br />
ich habe hier ( <a href="http://tutorial.schornboeck.net/los/string.htm" rel="nofollow">http://tutorial.schornboeck.net/los/string.htm</a> ) eine String-Klasse gesehen und hätte dazu ein paar Fragen:</p>
<pre><code class="language-cpp">char&amp; operator[](int index)
      {
        return value[index];
      }

      char const&amp; operator[](int index) const
      {
        return value[index];
      }
</code></pre>
<p>Wieso gibt es dort 2 Signaturen für operator[]? Was ist der Zweck, in welchem Fall wird welche Methode genommen und wieso lässt der Compiler das zu? Liegt das etwa an dem hinteren const in der 2. Signatur? Was bedeutet das const dort? Dass die Methode keine Member-Vars ändern darf?</p>
<p>Ist der Anwenndungsfall etwa so?</p>
<pre><code class="language-cpp">String s(&quot;Hallo&quot;);
char c = s[0]; // 2. Signatur mit const wird genommen
s[0] = 'h'; // 1. Signatur wird genommen
</code></pre>
<p>Wenn ja, wieso reicht dann nicht nur die 1. Signatur?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194676/string-klasse-operator</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 15:11:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194676.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Oct 2007 17:51:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String-Klasse - operator[] on Tue, 09 Oct 2007 17:51:03 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe hier ( <a href="http://tutorial.schornboeck.net/los/string.htm" rel="nofollow">http://tutorial.schornboeck.net/los/string.htm</a> ) eine String-Klasse gesehen und hätte dazu ein paar Fragen:</p>
<pre><code class="language-cpp">char&amp; operator[](int index)
      {
        return value[index];
      }

      char const&amp; operator[](int index) const
      {
        return value[index];
      }
</code></pre>
<p>Wieso gibt es dort 2 Signaturen für operator[]? Was ist der Zweck, in welchem Fall wird welche Methode genommen und wieso lässt der Compiler das zu? Liegt das etwa an dem hinteren const in der 2. Signatur? Was bedeutet das const dort? Dass die Methode keine Member-Vars ändern darf?</p>
<p>Ist der Anwenndungsfall etwa so?</p>
<pre><code class="language-cpp">String s(&quot;Hallo&quot;);
char c = s[0]; // 2. Signatur mit const wird genommen
s[0] = 'h'; // 1. Signatur wird genommen
</code></pre>
<p>Wenn ja, wieso reicht dann nicht nur die 1. Signatur?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381516</guid><dc:creator><![CDATA[string]]></dc:creator><pubDate>Tue, 09 Oct 2007 17:51:03 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse - operator[] on Tue, 09 Oct 2007 18:07:57 GMT]]></title><description><![CDATA[<p>Welcher der beiden Operatoren genommen wird, hängt ausschließlich vom Objektparameter (bei dir s) ab.<br />
Wenn s nicht konstant ist (wie hier beide male), wird die erste Überladung genommen, sonst die zweite.<br />
Die erste Überladung erlaubt es, das gewählte Zeichen zu verändern - erfordert es aber nicht, wenn nur<br />
der Wert gesucht ist - wie bei dir im 1. Fall - ist das genauso gut. Die zweite Überladung wiederum<br />
kann nicht dazu genutzt werden, das Zeichen zu verändern - und genau darum geht es: ein konstantes Objekt<br />
(oder eine Referenz auf const) soll nicht veränderbar sein und die einzelnen Zeichen sind ja logisch<br />
Bestandteil der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1381522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381522</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 09 Oct 2007 18:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse - operator[] on Tue, 09 Oct 2007 18:23:34 GMT]]></title><description><![CDATA[<p>Vielen Dank. Hab zufällig eben auch das Kapitel hier zu const-Methoden gesehen: <a href="http://tutorial.schornboeck.net/constmethode.htm" rel="nofollow">http://tutorial.schornboeck.net/constmethode.htm</a> . Jetzt ists klarer. <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/1381532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381532</guid><dc:creator><![CDATA[string]]></dc:creator><pubDate>Tue, 09 Oct 2007 18:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse - operator[] on Tue, 09 Oct 2007 18:29:14 GMT]]></title><description><![CDATA[<p>PS: Bist DU eigentlich der, der bei CS immer rumcampt? <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/1381541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1381541</guid><dc:creator><![CDATA[string]]></dc:creator><pubDate>Tue, 09 Oct 2007 18:29:14 GMT</pubDate></item></channel></rss>