<?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 zu Überladung]]></title><description><![CDATA[<p>Ich frag mich grad warum ich den Rückgabewert als Referenz damals deklariert<br />
haben könnte. Weiß ich nicht mehr.</p>
<pre><code class="language-cpp">int&amp; CFolge::operator[](int x)
	{

		if (x&lt;maxlen &amp;&amp; x&gt;=0)
        {
        return *(pFolge+x); 
         }

		return fehler; 

    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/259922/frage-zu-überladung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 16:26:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259922.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jan 2010 12:44:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 12:44:22 GMT]]></title><description><![CDATA[<p>Ich frag mich grad warum ich den Rückgabewert als Referenz damals deklariert<br />
haben könnte. Weiß ich nicht mehr.</p>
<pre><code class="language-cpp">int&amp; CFolge::operator[](int x)
	{

		if (x&lt;maxlen &amp;&amp; x&gt;=0)
        {
        return *(pFolge+x); 
         }

		return fehler; 

    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1846979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846979</guid><dc:creator><![CDATA[blurry331]]></dc:creator><pubDate>Fri, 29 Jan 2010 12:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 12:51:59 GMT]]></title><description><![CDATA[<p>Damit du das Objekt verändern kannst. Aber besser machst du das so:</p>
<pre><code class="language-cpp">int&amp; CFolge::operator[](unsigned int x)
{
  assert ( x &lt; maxlen );

  return *(pFolge+x);
}
</code></pre>
<p>Dann brauchst du auch kein dummy Objekt.</p>
<p>Ich verweise einfach mal auf <a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">std::vector</a>, da ich das Gefühl habe, dass du das Rad neu erfindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846987</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 29 Jan 2010 12:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 12:52:21 GMT]]></title><description><![CDATA[<p>Damit du das, was hinter dem Pointer &quot;pFolge+x&quot; zu finden ist, auch ändern kannst.</p>
<p>ähnlich wie bei std::vector:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vi;
/*...*/
vi[13] = 425;
</code></pre>
<p>Wenn hier keine Referenz zurückgegeben würde, dann würde stattdessen eine Kopie des Wertes von vi[13] zurückgegeben und der Wert würde durch die Zuweisung nicht geändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846988</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 29 Jan 2010 12:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:26:52 GMT]]></title><description><![CDATA[<p>danke.</p>
<p>Sonst wäre also die Zuweisung nicht möglich. Was das assert anbelangt,<br />
dachte ich das wäre nur zum debuggen da und in der Release Version<br />
gar nicht mehr enthalten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847013</guid><dc:creator><![CDATA[blurry12345]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:37:40 GMT]]></title><description><![CDATA[<p>blurry12345 schrieb:</p>
<blockquote>
<p>danke.</p>
<p>Sonst wäre also die Zuweisung nicht möglich. Was das assert anbelangt,<br />
dachte ich das wäre nur zum debuggen da und in der Release Version<br />
gar nicht mehr enthalten ?</p>
</blockquote>
<p>Ja. Und? Ist das nicht genau das, was du willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847019</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:40:00 GMT]]></title><description><![CDATA[<p>blurry12345 schrieb:</p>
<blockquote>
<p>Was das assert anbelangt, dachte ich das wäre nur zum debuggen da und in der Release Version gar nicht mehr enthalten ?</p>
</blockquote>
<p>Das ist korrekt und womöglich auch erwünscht. <code>std::vector</code> bietet auch zwei unterschiedliche Zugriffe:<a href="http://www.cplusplus.com/reference/stl/vector/operator%5B%5D/" rel="nofollow"> <code>std::vector::operator[]</code> </a>und<a href="http://www.cplusplus.com/reference/stl/vector/at/" rel="nofollow"> <code>std::vector::at</code> </a>.</p>
<p>Über den Operator bekommt man schnellen ungeprüften Zugang. Da ist allerhöchstens eben auch ein <code>assert</code> dahinter. Die Methode <code>at</code> dagegen prüft jedesmal, ob der Index korrekt ist und wenn nicht, wird eine <code>out_of_range</code> Exception geworfen. Doch so eine Überprüfung kostet zusätzliche Zeit, obwohl es zum Teil nicht mal nötig ist.</p>
<pre><code class="language-cpp">int arr[] = { 234, 223, 22, 12 };
std::vector&lt;int&gt; vec(arr, arr + 4);

for(int i = 0; i &lt; vec.size(); ++i)
{
  vec[i] *= i;
  // Eine zusätzliche Überprüfung ist unnötig, wir wissen, dass der index
  // immer korrekt sein wird.
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847020</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:44:50 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Über den Operator bekommt man schnellen ungeprüften Zugang. Da ist allerhöchstens eben auch ein <code>assert</code> dahinter.</p>
</blockquote>
<p>Sag mir wenn ich falsch liege, aber auch wenn die Methode at bei einem Indexzugriff mit einer Exception reagieren muss, darf dies auch der Indexoperator (Auch wenn ich letzteres in der Praxis noch nicht beobachtet habe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847025</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:47:54 GMT]]></title><description><![CDATA[<p>eigentlich schon. Ist nur zu übungszwecken.</p>
<p>Noch eine Frage. Warum muss der operator= eine Memberfunktion sein und<br />
kann nicht als friend deklariert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847029</guid><dc:creator><![CDATA[blurry1435]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:52:36 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html</a><br />
Weil es vorgschrieben ist. Punkt.<br />
Ein operator= braucht Zugriff auf private Member, da musst du ihn immer als friend deklarieren, was doch Käse ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847035</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 13:58:07 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Sag mir wenn ich falsch liege, aber auch wenn die Methode at bei einem Indexzugriff mit einer Exception reagieren muss, darf dies auch der Indexoperator (Auch wenn ich letzteres in der Praxis noch nicht beobachtet habe).</p>
</blockquote>
<p>Also der Standard macht diesbezüglich, glaub ich, keine Vorschrift. Also der <code>operator[]</code> dürfte auch eine Exception werfen. Allerding wird zum Beispiel in &quot;Die C++ Programmiersprache&quot; von Bjarne Stroustrup erwähnt, dass <code>at</code> im Gegensatz zu <code>operator[]</code> eine Indexüberprüfung hat. Wodurch eigentlich gefolgert werden könnte, dass <code>operator[]</code> keine Indexüberprüfung hat oder halt vielleicht keine garantierte, wie mans nimmt.</p>
<p>Womöglich hat man es offen gelassen, falls auf einer Plattform standardmässig automatisch Überprüfungen gemacht werden. Keine Ahnung.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847038</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:58:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 15:07:02 GMT]]></title><description><![CDATA[<p>IIRC gibts beim MSVC unter bestimmten Umständen (d.h. bestimmte Compilerflags nicht abgeschaltet) noch Überprüfungen, irgendwas mit STL_SECURE_ITERATOR oder son Käse <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="😉"
    /> Also der op[] darf alles mögliche machen, solang er bei gültigem Index den richtigen Wert zurückgibt. Der unterschied zwischen at() und op[]() liegt beim Aufruf mit ungültigem Index, und zwar exception vs. undefiniertes Verhalten, was sehr wohl auch eine Exception sein darf - ist eben nicht definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847075</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 29 Jan 2010 15:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 15:08:54 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>IIRC gibts beim MSVC unter bestimmten Umständen (d.h. bestimmte Compilerflags nicht abgeschaltet) noch Überprüfungen, irgendwas mit STL_SECURE_ITERATOR oder son Käse <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="😉"
    /> Also der op[] darf alles mögliche machen, solang er bei gültigem Index den richtigen Wert zurückgibt. Der unterschied zwischen at() und op[]() liegt beim Aufruf mit ungültigem Index, und zwar exception vs. undefiniertes Verhalten, was sehr wohl auch eine Exception sein darf - ist eben nicht definiert.</p>
</blockquote>
<p>das makro hieß zwar anders, aber imho hat das nur was damit zu tun, dass übergebene ranges und iteratoren gecheckt werden - wird aber nicht im op[] verwendet... da ists imho auch nur ein simples <code>assert()</code></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847079</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 29 Jan 2010 15:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Überladung on Fri, 29 Jan 2010 16:20:33 GMT]]></title><description><![CDATA[<p>Wenn ihr <code>_SECURE_SCL</code> meint, ist das ein Makro für Checked-Iterators.</p>
<p>Aber <code>at()</code> habe ich bisher noch nie wirklich benötigt. Wenn ich Random-Access brauche, stimmt der Index. <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/1847127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847127</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 29 Jan 2010 16:20:33 GMT</pubDate></item></channel></rss>