<?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 und Vererbung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu const und Vererbung:</p>
<pre><code>class Test1
{
public:
virtual void setVariable() const=0;
}

class Test2 : public Test1
{
public:
bool bVar;
virtual void setVariable() const;
}

void Test2::setVariable() const
{

 bVar=false; //geht nicht Fehler: L-Wert gibt ein konstantes Objekt an

 ((Test2*) this)-&gt;bVar=false; //geht

}
</code></pre>
<p>Das nachfolgende const bedeutet ja, dass this nicht verändert werden darf, aber<br />
wieso geht dann ((Test2*) this)-&gt;bVar=false; das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>so long<br />
Don</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195486/const-und-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 02:38:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195486.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Oct 2007 09:11:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 09:11:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu const und Vererbung:</p>
<pre><code>class Test1
{
public:
virtual void setVariable() const=0;
}

class Test2 : public Test1
{
public:
bool bVar;
virtual void setVariable() const;
}

void Test2::setVariable() const
{

 bVar=false; //geht nicht Fehler: L-Wert gibt ein konstantes Objekt an

 ((Test2*) this)-&gt;bVar=false; //geht

}
</code></pre>
<p>Das nachfolgende const bedeutet ja, dass this nicht verändert werden darf, aber<br />
wieso geht dann ((Test2*) this)-&gt;bVar=false; das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>so long<br />
Don</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387700</guid><dc:creator><![CDATA[Don999]]></dc:creator><pubDate>Thu, 18 Oct 2007 09:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 09:18:02 GMT]]></title><description><![CDATA[<p>Naja, du castest die &quot;const&quot;-heit ja einfach weg.<br />
Die C++-Mechanismen schützen vor kleinen Fahrlässigkeiten, aber nicht vor vorsätzlichem Missbrauch.<br />
<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/1387705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387705</guid><dc:creator><![CDATA[scrontch]]></dc:creator><pubDate>Thu, 18 Oct 2007 09:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 09:21:28 GMT]]></title><description><![CDATA[<p>weil du mit dem C-style cast this nach Test2* castest und damit das const verwirfst. Sprich: eigentlich ist this innerhalb der Funktion vom Typ const Test2*. Der cast bringt in dem Fall das selbe wie const_cast&lt;Test2*&gt;(this)</p>
<p>zu gut deutsch: sieht bescheiden aus, ist auch nicht besonders schoen <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>
<p>Wenn die zu veraendernde Variable nicht zum internen Zustand des Objekt gehoert (sprich, wenn sie auch in const-Funktionen gefahrlos geaendert werden darf), dann deklariere sie als mutable, damit du die casts weglassen kannst. Sollte sie allgemeins schon const bleiben und nur in diesem speziellen Fall doch veraendert werden (was die const-heit des Objektes eigentlich verletzt), dann benutz lieber den C++ const_cast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387706</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 18 Oct 2007 09:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 09:18:30 GMT]]></title><description><![CDATA[<p>Don999 schrieb:</p>
<blockquote>
<p>Das nachfolgende const bedeutet ja, dass this nicht verändert werden darf, aber<br />
wieso geht dann ((Test2*) this)-&gt;bVar=false; das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Weil Du hier this das const weg-castest (Test2* ist nicht const, steht ja auch nicht dabei <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/1387707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387707</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 18 Oct 2007 09:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 10:45:09 GMT]]></title><description><![CDATA[<p>Btw - der Methodenname &quot;<strong>set</strong>Variable()&quot; deutet eigentlich darauf hin, daß diese Methode irgendwas in der Klasse <strong>set</strong>zen will - da hast du entweder einen unpassenden Namen gewählt (für eine Ausgabe-Methode ist &quot;<strong>get</strong>Variable()&quot; passender) oder das const ist überflüssig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387773</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 18 Oct 2007 10:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 10:49:41 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.<br />
In C++ kann man ja machen was man will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><br />
Ich komme von Delphi und da wird man an die Hand genommen.<br />
Beim Methodennamen hab ich nicht sonderlich viel nachgedacht...</p>
<p>so long<br />
Don</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387776</guid><dc:creator><![CDATA[Don999]]></dc:creator><pubDate>Thu, 18 Oct 2007 10:49:41 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 10:54:07 GMT]]></title><description><![CDATA[<p>Don999 schrieb:</p>
<blockquote>
<p>Danke für die Antworten.<br />
In C++ kann man ja machen was man will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>Klar kannst du machen, was du willst - aber wenn du irgendwann ein &quot;echt&quot; konstantes Objekt vorgesetzt bekommst, wird dir das Programm mit einem SegFault um die Ohren fliegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387780</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 18 Oct 2007 10:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 12:18:16 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nachdem das eigentliche Problem ja gelöst scheint, noch eine Anregung von mir: Da das Ganze 0% mit Vererbung zu tun hat, sollte man das evtl. auch aus der Titelzeile entfernen (&quot;Viagra&quot; steht da ja auch nicht drin <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>
<p>EDIT: Oh - als &quot;Unregistrierter&quot; kann man das wahrscheinlich gar nicht.<br />
Noch ein Grund, Unregs das Erstellen neuer Threads zu verbieten. <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387840</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 18 Oct 2007 12:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 13:15:12 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>eigentlich ist this innerhalb der Funktion vom Typ const Test2*.</p>
</blockquote>
<p>Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387909</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 17:26:53 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>eigentlich ist this innerhalb der Funktion vom Typ const Test2*.</p>
</blockquote>
<p>Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?</p>
</blockquote>
<p>Da this kein lvalue ist, sprich nicht auf der linken Seite einer Zuweisung stehen kann, verhält es sich in der Tat immer wie T* const (übrigens unabhäöngig davon, ob T selbst const ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387919</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 18 Oct 2007 17:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 17:01:08 GMT]]></title><description><![CDATA[<p>Don999 schrieb:</p>
<blockquote>
<p>Ich komme von Delphi und da wird man an die Hand genommen.</p>
</blockquote>
<p>In C++ wird man auch &quot;an die Hand genommen&quot;. Man wird nur nicht kastriert <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/1388078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388078</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Oct 2007 17:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 17:19:24 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>this-&gt;that schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>eigentlich ist this innerhalb der Funktion vom Typ const Test2*.</p>
</blockquote>
<p>Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?</p>
</blockquote>
<p>Da this kein rvalue ist, sprich nicht auf der rechten Seite einer Zuweisung stehen kann, verhält es sich in der Tat immer wie T* const (übrigens unabhäöngig davon, ob T selbst const ist).</p>
</blockquote>
<p>Meinst du nicht eher lvalue und linke Seite?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388086</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Thu, 18 Oct 2007 17:19:24 GMT</pubDate></item><item><title><![CDATA[Reply to const und Vererbung on Thu, 18 Oct 2007 17:26:36 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Meinst du nicht eher lvalue und linke Seite?</p>
</blockquote>
<p>Äh, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388087</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 18 Oct 2007 17:26:36 GMT</pubDate></item></channel></rss>