<?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[Unterschied rein virtuelle Methode mit =0 zu const=0]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin kein Akademiker und auch nur Hobbyprogrammierer und wollte mal die Profis hier zu meiner Unklarheit befragen.</p>
<p>Ich bin gerade auf zwei unterschiedlich Signaturen von rein virtuellen Methoden gestoßen. Nun will ich in Erfahrung bringen, ob ich den Unterschied der beiden Arten richtig verstanden habe.</p>
<p>Bei der rein virtuellen Methode mit const=0, darf in einer abgeleiteten Klasse keine Variable der Klasse selbst geändert werden, wenn diese Methode implementiert wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308575/unterschied-rein-virtuelle-methode-mit-0-zu-const-0</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 18:05:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308575.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Sep 2012 07:05:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sat, 29 Sep 2012 07:05:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin kein Akademiker und auch nur Hobbyprogrammierer und wollte mal die Profis hier zu meiner Unklarheit befragen.</p>
<p>Ich bin gerade auf zwei unterschiedlich Signaturen von rein virtuellen Methoden gestoßen. Nun will ich in Erfahrung bringen, ob ich den Unterschied der beiden Arten richtig verstanden habe.</p>
<p>Bei der rein virtuellen Methode mit const=0, darf in einer abgeleiteten Klasse keine Variable der Klasse selbst geändert werden, wenn diese Methode implementiert wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255462</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 29 Sep 2012 07:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sat, 29 Sep 2012 07:24:27 GMT]]></title><description><![CDATA[<p>const hat mit virtual überhaupt nichts zu tun.. such einfach mal nach &quot;c++ const method&quot;, da wird dir alles erklärt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255465</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 29 Sep 2012 07:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sat, 29 Sep 2012 10:27:45 GMT]]></title><description><![CDATA[<p>Butterbrot schrieb:</p>
<blockquote>
<p>Bei der rein virtuellen Methode mit const=0, darf in einer abgeleiteten Klasse keine Variable der Klasse selbst geändert werden, wenn diese Methode implementiert wird?</p>
</blockquote>
<p>Ja, richtig ~(es sei denn du benutzt Zeiger als Attribute ... oder du castest das const weg)~</p>
<p>Aber wie cooky schon gesagt hat, hat das const gar nichts mit virtuellen Methoden zu tun - das kannst (bzw. sollst) du bei jeder Methode einer Klasse anwenden, die das Objekt der Klasse nicht aendern soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255500</guid><dc:creator><![CDATA[Ferris]]></dc:creator><pubDate>Sat, 29 Sep 2012 10:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sat, 29 Sep 2012 12:35:50 GMT]]></title><description><![CDATA[<p>Ok danke, damit kann ich was anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255515</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 29 Sep 2012 12:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sat, 29 Sep 2012 12:53:44 GMT]]></title><description><![CDATA[<p>Ferris schrieb:</p>
<blockquote>
<p>Ja, richtig ~(es sei denn du benutzt Zeiger als Attribute ... oder du castest das const weg)~</p>
</blockquote>
<p>Oder du hast mutable-Membervariablen in deiner Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255517</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 29 Sep 2012 12:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sun, 30 Sep 2012 15:21:27 GMT]]></title><description><![CDATA[<p>Ferris schrieb:</p>
<blockquote>
<p>[Ja, richtig ~(es sei denn du benutzt Zeiger als Attribute ... oder du castest das const weg)~</p>
</blockquote>
<p>Du kannst ein const nicht wegcasten... Wenn du ein wirklich konstantes Objekt hast, erzeugst du dadurch undefiniertes Verhalten!</p>
<p><a href="http://stackoverflow.com/questions/11457953/const-cast-vs-mutable-any-difference" rel="nofollow">http://stackoverflow.com/questions/11457953/const-cast-vs-mutable-any-difference</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255802</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 30 Sep 2012 15:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sun, 30 Sep 2012 16:38:59 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Ferris schrieb:</p>
<blockquote>
<p>[Ja, richtig ~(es sei denn du benutzt Zeiger als Attribute ... oder du castest das const weg)~</p>
</blockquote>
<p>Du kannst ein const nicht wegcasten... Wenn du ein wirklich konstantes Objekt hast, erzeugst du dadurch undefiniertes Verhalten!</p>
<p><a href="http://stackoverflow.com/questions/11457953/const-cast-vs-mutable-any-difference" rel="nofollow">http://stackoverflow.com/questions/11457953/const-cast-vs-mutable-any-difference</a></p>
</blockquote>
<p>Interessant... Danke fuer den Link.</p>
<p>Das hier funktioniert mit meinem Compiler (MSVC10) auch nicht:</p>
<pre><code class="language-cpp">const int i = 5;
int&amp; bla = const_cast&lt;int&amp;&gt;(i);
bla = 1;
std::cout &lt;&lt; i;
</code></pre>
<p>Gibt &quot;5&quot; aus, obwohl es &quot;1&quot; ausgeben muesste... Ich nehme an, weil der Compiler hier einfach eine bloesse Textersetzung vornimmt und keinen extra Speicher auf dem Stapel benutzt?</p>
<p>Jedenfalls ist so ein Fall eher ein Spezialfall; ehrlich gesagt wundert es mich sogar einwenig, dass mein Compiler keine Warnung ausgibt, da sowas ja zur Kompilierzeit erkannt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255834</guid><dc:creator><![CDATA[Ferris]]></dc:creator><pubDate>Sun, 30 Sep 2012 16:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sun, 30 Sep 2012 16:48:18 GMT]]></title><description><![CDATA[<p>Ferris schrieb:</p>
<blockquote>
<p>Gibt &quot;5&quot; aus, obwohl es &quot;1&quot; ausgeben muesste...</p>
</blockquote>
<p>Müsste es eben nicht. Wenn du const bei echten Konstanten wegcastest, hast du UB (Undefined Behavior) -&gt; alles darf passieren -&gt; Bug im Programm.</p>
<p>Triff nie irgendwelche Annahmen über UB, sonst fliegt dir eines Tages alles um die Ohren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255836</guid><dc:creator><![CDATA[flugzoig]]></dc:creator><pubDate>Sun, 30 Sep 2012 16:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Sun, 30 Sep 2012 17:09:02 GMT]]></title><description><![CDATA[<p>[quote=&quot;Ferris&quot;]</p>
<pre><code class="language-cpp">const int i = 5;
int&amp; bla = const_cast&lt;int&amp;&gt;(i);
bla = 1;
std::cout &lt;&lt; i;
</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="😃"
    /> Mein GCC gibt mir einen Fehler aus, den ich auch nicht nachvollziehen kann:</p>
<pre><code class="language-cpp">int main()
{
	const int i = 5;
	int&amp; bla = const_cast&lt;int&amp;&gt;(i); // [Error] invalid initialization of non-const reference of type 'int&amp;' from an rvalue of type 'int'
}
</code></pre>
<p>Wieso <code>rvalue of type 'int'</code> ? Ich erstelle doch gar keine temp. Kopie von i, sodern eine Referenz auf i.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255842</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 30 Sep 2012 17:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Mon, 01 Oct 2012 07:43:46 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main()
{
	const int i = 5;
	int&amp; bla = const_cast&lt;int&amp;&gt;(i); // [Error] invalid initialization of non-const reference of type 'int&amp;' from an rvalue of type 'int'
}
</code></pre>
<p>Wieso <code>rvalue of type 'int'</code> ? Ich erstelle doch gar keine temp. Kopie von i, sodern eine Referenz auf i.</p>
</blockquote>
<p>Schreibs mal mit Zeilenumbruch nach dem Gleichehitszeichen und schau, in welcher Zeile er dann meckert <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="😉"
    /> Der Compiler weiß, dass i nirgendwo geändert werden darf. Statt dafür Speicher zu reservieren kann er also genauso gut überall, wo &quot;i&quot; steht, gleich &quot;5&quot; einsetzen. Und <code>const_cast&lt;int&amp;&gt;(5)</code> ist nunmal Quark <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="🙂"
    /><br />
Der 4.5.1er GCC meckert da übrigens nicht. Sondern produziert seltsamen Output: <a href="http://ideone.com/5wGt6" rel="nofollow">http://ideone.com/5wGt6</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255970</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 01 Oct 2012 07:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Mon, 01 Oct 2012 07:58:20 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Der 4.5.1er GCC meckert da übrigens nicht.</p>
</blockquote>
<p>Stimmt, wenn C++11 aktiviert ist meckert er, ansonsten nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255981</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 01 Oct 2012 07:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Mon, 01 Oct 2012 08:25:05 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Der 4.5.1er GCC meckert da übrigens nicht.</p>
</blockquote>
<p>Stimmt, wenn C++11 aktiviert ist meckert er, ansonsten nicht.</p>
</blockquote>
<p>Nö, siehe Link - dort ist C++11 aktiviert <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="😉"
    /> Hast du ne spätere Version?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255988</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 01 Oct 2012 08:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied rein virtuelle Methode mit =0 zu const=0 on Mon, 01 Oct 2012 08:34:21 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Der 4.5.1er GCC meckert da übrigens nicht.</p>
</blockquote>
<p>Stimmt, wenn C++11 aktiviert ist meckert er, ansonsten nicht.</p>
</blockquote>
<p>Nö, siehe Link - dort ist C++11 aktiviert <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="😉"
    /> Hast du ne spätere Version?</p>
</blockquote>
<p>Ich habe <code>4.6.1</code> , und mit diesen Optionen: <code>-std=c++0x -std=gnu++0x -Wc++0x-compat</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255990</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 01 Oct 2012 08:34:21 GMT</pubDate></item></channel></rss>