<?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[Anfängerfrage (const | virtual)]]></title><description><![CDATA[<p>Habe 2 Probleme:</p>
<p>Mit virtual erstelle ich ja wie in java eine abstrakte Methode die überschrieben werden muss. Das hab ich getan, doch er meckert nun das es keinen virtual Destrictor gibt wieso sollt ich einen erzeugen?</p>
<p>Die zweite frage wäre wann hänge ich an eine funktion const an hab das nicht ganz kapiert.</p>
<p>Danke für die HIlfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215197/anfängerfrage-const-virtual</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 12:49:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215197.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jun 2008 16:24:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sat, 07 Jun 2008 16:24:46 GMT]]></title><description><![CDATA[<p>Habe 2 Probleme:</p>
<p>Mit virtual erstelle ich ja wie in java eine abstrakte Methode die überschrieben werden muss. Das hab ich getan, doch er meckert nun das es keinen virtual Destrictor gibt wieso sollt ich einen erzeugen?</p>
<p>Die zweite frage wäre wann hänge ich an eine funktion const an hab das nicht ganz kapiert.</p>
<p>Danke für die HIlfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524720</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sat, 07 Jun 2008 16:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sat, 07 Jun 2008 16:38:49 GMT]]></title><description><![CDATA[<p>Stamu schrieb:</p>
<blockquote>
<p>Die zweite frage wäre wann hänge ich an eine funktion const an hab das nicht ganz kapiert.</p>
</blockquote>
<p>Wenn deine Methode nichts an der Klasse ändert, also z.B. bei gettern. <a href="https://www.google.de/search?&amp;q=c%2B%2B%20const%20correctness" rel="nofollow">Google: c++ const correctness</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524723</guid><dc:creator><![CDATA[2]]></dc:creator><pubDate>Sat, 07 Jun 2008 16:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sat, 07 Jun 2008 16:53:04 GMT]]></title><description><![CDATA[<p>zu virtual: als faustregel kannst du dir merken, dass wenn du eine elementfunktion als virtual gekennzeichnet hast, musst du auch deinen destructor virtual machen, einfach damit alle erzeugten objekte korrekt wieder zerstört werden.</p>
<p>zu const elementfunktionen: solche funktionen verändern den zustand eines objektes nicht, sprich sie ändern den wert der daten nicht. z.b. bei get-funktionen, die nur einen wert wiedergeben, ihn aber nicht verändern.</p>
<pre><code class="language-cpp">class x
{
   int a;

public:
    int getA() const {return a;}
};
</code></pre>
<p>ps.: das erfährst du in jedem halbwegs guten anfängerbuch <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/1524725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524725</guid><dc:creator><![CDATA[kreater]]></dc:creator><pubDate>Sat, 07 Jun 2008 16:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sat, 07 Jun 2008 17:24:45 GMT]]></title><description><![CDATA[<p>ausnahme sind mutable vaiablen</p>
<pre><code class="language-cpp">mutable int a;
</code></pre>
<p>die kann man auch in eienr const funktion ändern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524741</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 07 Jun 2008 17:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sat, 07 Jun 2008 23:20:22 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524904</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sat, 07 Jun 2008 23:20:22 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 10:29:13 GMT]]></title><description><![CDATA[<p>HAbe noch ein kleines Problem glaube liegt am virtual.<br />
Struktur des Programms:</p>
<pre><code class="language-cpp">class A
{
public:
virtual double foo() const;
private:
char temp;
};

class B : public A
{
private:
A neuesA;
};

class C : public B
{
public:
B(char a)
{
temp = a;
};
double foo() const;
}
};

so wenn ich nun in der cpp folgendes machen will:

double C::foo() const
{
return B::neuesA.foo();
}
</code></pre>
<p>sagt er mir das es foo nicht gebe für neuesA, aber ich vererbe es ja an alle klassen und es muss ja überschrieben werden also hat ja eigentlich jeder ein foo oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1524992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1524992</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 10:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 11:49:24 GMT]]></title><description><![CDATA[<p>hat jemand eine idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525061</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 11:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 12:43:53 GMT]]></title><description><![CDATA[<p>Stamu schrieb:</p>
<blockquote>
<p>hat jemand eine idee?</p>
</blockquote>
<p>Nach 2 Stunden schon ungeduldig? Geduld ist eine tugend, und die Hilfe der Leute hier freiwillig UND Kostenlos.</p>
<p>Aber damit du nicht dumm stirbst: neuesA ist private, da kommt ne abgeleitete Klasse nicht dran.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525101</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 08 Jun 2008 12:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 13:12:26 GMT]]></title><description><![CDATA[<p>das mit dem private war Tippfehler von mir soll protected sein</p>
<p>Zu dem keine Geduld und dem Rest:<br />
Es ist jedem klar das hier die Leute freiwillig UND Kostenlos helfen, dafür sind auch alle dankbar. Deine Antwort auf die Frage (... nicht dumm stirbst ...) ist naja lassen wir das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525129</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 13:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 13:33:44 GMT]]></title><description><![CDATA[<p>Stamu schrieb:</p>
<blockquote>
<p>das mit dem private war Tippfehler von mir soll protected sein</p>
</blockquote>
<p>dann würde ich an deiner Stelle nochmal den Code ohne tippfehler posten, denn ich seh da noch ein paar andere &quot;Tippfehler&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525141</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 08 Jun 2008 13:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 15:54:04 GMT]]></title><description><![CDATA[<p>Danke für den hinweis hier der code sollte nun stimmen</p>
<pre><code class="language-cpp">class A
{
public:
virtual double foo() const;
protected:
char temp;
};

class B : public A
{
protected:
A neuesA;
};

class C : public B
{
public:
B(char a)
{
temp = a;
};
double foo() const;
};
</code></pre>
<p>so wenn ich nun in der cpp folgendes machen will:</p>
<pre><code class="language-cpp">double C::foo() const
{
return B::neuesA.foo();
}
</code></pre>
<p>sagt er mir das es foo nicht gebe für neuesA, aber ich vererbe es ja an alle klassen und es muss ja überschrieben werden also hat ja eigentlich jeder ein foo oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525234</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 15:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 16:09:17 GMT]]></title><description><![CDATA[<p>Stamu schrieb:</p>
<blockquote>
<p>sagt er mir das es foo nicht gebe für neuesA, aber ich vererbe es ja an alle klassen und es muss ja überschrieben werden also hat ja eigentlich jeder ein foo oder nicht?</p>
</blockquote>
<p>Wie lautet die Fehlermeldung denn genau? Irgendwas in Richtung &quot;unresolved external symbol&quot;?</p>
<p>Ich seh einfach nur, dass A keine implementation von foo() hat. Bei virtuellen funktionen brauchst du immernoch einen Funktionsrumpf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525237</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 08 Jun 2008 16:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 16:29:15 GMT]]></title><description><![CDATA[<p>undefined reference to `A::foo() const' ist die Meldung</p>
<p>Bin davon ausgegangen das er ja sieht das die foo Funktion in jeder Unterklasse überschrieben wird. Würde es was bringen wenn ich die ganze Klasse sozusagen abstract mache mit = 0?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525244</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 16:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 16:52:04 GMT]]></title><description><![CDATA[<p>Du willst eine Methode aufrufen die es nicht gibt, wie soll das gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525252</guid><dc:creator><![CDATA[jetzt überleg mal]]></dc:creator><pubDate>Sun, 08 Jun 2008 16:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 17:51:24 GMT]]></title><description><![CDATA[<p>Stamu schrieb:</p>
<blockquote>
<p>Bin davon ausgegangen das er ja sieht das die foo Funktion in jeder Unterklasse überschrieben wird. Würde es was bringen wenn ich die ganze Klasse sozusagen abstract mache mit = 0?</p>
</blockquote>
<p>Jap. pure virtual(=0) weist den compiler explizit darauf hin, dass die Funktion keinen Körper hat.</p>
<p>Nebenbei ist es für neuesA egal, ob die abgeleiteten Klassen überschrieben sind. Denn neuesA hat den dynamischen typ A, es ist ein echtes Objekt der Basisklasse, keine abgeleitete Klasse. (ich wette, dass du vergessen hast dass C++ Im gegensatz zu Java nicht alle Objekte als referenz speichert, sondern dass C++ einen Unterschied zwischen Objekt, Referenz und Zeiger macht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525283</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 08 Jun 2008 17:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 18:01:12 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Stamu schrieb:</p>
<blockquote>
<p>Bin davon ausgegangen das er ja sieht das die foo Funktion in jeder Unterklasse überschrieben wird. Würde es was bringen wenn ich die ganze Klasse sozusagen abstract mache mit = 0?</p>
</blockquote>
<p>Jap. pure virtual(=0) weist den compiler explizit darauf hin, dass die Funktion keinen Körper hat.</p>
</blockquote>
<p>Nicht ganz. Eine virtuelle Funktion, die nicht rein virtuell ist, <em>muss</em> definiert werden, eine rein virtuelle Funktion <em>kann</em> definiert werden. Wäre foo in A eine rein virtuelle FUnktion, so wäre A abstrakt und die Definition als Member von B nicht möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525294</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 08 Jun 2008 18:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage (const | virtual) on Sun, 08 Jun 2008 19:55:53 GMT]]></title><description><![CDATA[<p>Danke für die Tipps hat nun geklappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525378</guid><dc:creator><![CDATA[Stamu]]></dc:creator><pubDate>Sun, 08 Jun 2008 19:55:53 GMT</pubDate></item></channel></rss>