<?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 als const und &amp;quot;non-const&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich zwei überladene Versionen einer Funktion habe, die sich nur darin unterscheiden, dass die eine const ist und eine konstante Referenz zurückgibt während die andere nicht const ist und eine (nicht konstante) Referenz zurückgibt, woher weiß ich dann, welche aufgerufen wird?</p>
<p>Z.B. Indexoperator:</p>
<pre><code class="language-cpp">T&amp;             operator [] (int);
const T&amp;       operator [] (int) const;
</code></pre>
<p>In Fällen, wo die &quot;non-const&quot; Variante zwingend erforderlich ist, ist das natürlich eindeutig:</p>
<pre><code class="language-cpp">myVar[0] = 17;
</code></pre>
<p>Aber wie ist das beispielsweise bei</p>
<pre><code class="language-cpp">if (myVar[0] == 17)
</code></pre>
<p>Kann man sich hier sicher sein, dass die const-Variante aufgerufen wird?</p>
<p>Ich hoffe, das ist keine allzu blöde Frage und mich kann jemand aufklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303301/überladung-als-const-und-quot-non-const-quot</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 14:46:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303301.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 May 2012 13:44:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladung als const und &amp;quot;non-const&amp;quot; on Thu, 10 May 2012 13:44:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich zwei überladene Versionen einer Funktion habe, die sich nur darin unterscheiden, dass die eine const ist und eine konstante Referenz zurückgibt während die andere nicht const ist und eine (nicht konstante) Referenz zurückgibt, woher weiß ich dann, welche aufgerufen wird?</p>
<p>Z.B. Indexoperator:</p>
<pre><code class="language-cpp">T&amp;             operator [] (int);
const T&amp;       operator [] (int) const;
</code></pre>
<p>In Fällen, wo die &quot;non-const&quot; Variante zwingend erforderlich ist, ist das natürlich eindeutig:</p>
<pre><code class="language-cpp">myVar[0] = 17;
</code></pre>
<p>Aber wie ist das beispielsweise bei</p>
<pre><code class="language-cpp">if (myVar[0] == 17)
</code></pre>
<p>Kann man sich hier sicher sein, dass die const-Variante aufgerufen wird?</p>
<p>Ich hoffe, das ist keine allzu blöde Frage und mich kann jemand aufklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210194</guid><dc:creator><![CDATA[jklö]]></dc:creator><pubDate>Thu, 10 May 2012 13:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Überladung als const und &amp;quot;non-const&amp;quot; on Thu, 10 May 2012 13:47:17 GMT]]></title><description><![CDATA[<p>Es wird immer die non-const Variante aufgerufen, es sei denn du rufst die Methode auf einem als const qualifizierten Objekt, über eine Referenz auf ein const qualifiziertes Objekt oder über einen Pointer auf ein const qualifiziertes Objekt auf. (Dann ist this nämlich const. :))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210195</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 10 May 2012 13:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to Überladung als const und &amp;quot;non-const&amp;quot; on Thu, 10 May 2012 13:48:39 GMT]]></title><description><![CDATA[<p>Die non-const Variant wird immer dann aufgerufen, wenn das Objekt, auf dem sie arbeitet, nicht const ist. (d.h. *this ist nicht const). Die const Variant wird aufgerufen, wenn das Objekt konstant ist.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class Var {
  public:
    void foo() { std::cout &lt;&lt; &quot;Non-const.\n&quot;; }
    void foo() const { std::cout &lt;&lt; &quot;Const.\n&quot;; }
};

int main() {
  Var myNonConstVar;
  Var const myConstVar;
  myNonConstVar.foo();
  myConstVar.foo();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2210196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210196</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Thu, 10 May 2012 13:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to Überladung als const und &amp;quot;non-const&amp;quot; on Thu, 10 May 2012 13:54:54 GMT]]></title><description><![CDATA[<p>Also nur dann, wenn auch tatsächlich die Notwendigkeit besteht (weil this const ist). Da hätte ich vielleicht auch selbst drauf kommen können <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="🤡"
    /></p>
<p>Trotzdem vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210199</guid><dc:creator><![CDATA[jklö]]></dc:creator><pubDate>Thu, 10 May 2012 13:54:54 GMT</pubDate></item></channel></rss>