<?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[Polymorphie und Visuelle Klassen]]></title><description><![CDATA[<p>Hallo!<br />
Kann mir jemand erklären was es damit auf sich hat?<br />
Ist sehr schlecht erklärt in meinem Buch.<br />
Ein Code Beispiel wäre gut!<br />
Ich verstehe nicht ganz, was die bringen und wie man sie einsetzt!<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217304/polymorphie-und-visuelle-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 17:40:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217304.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jul 2008 07:56:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 07:56:03 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Kann mir jemand erklären was es damit auf sich hat?<br />
Ist sehr schlecht erklärt in meinem Buch.<br />
Ein Code Beispiel wäre gut!<br />
Ich verstehe nicht ganz, was die bringen und wie man sie einsetzt!<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541697</guid><dc:creator><![CDATA[MajorPoly]]></dc:creator><pubDate>Sun, 06 Jul 2008 07:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 08:28:12 GMT]]></title><description><![CDATA[<p>was genau willst du wissen?<br />
visuell klassen bedeutet normalerweise, dass es sich um klassen dreht, die mit der gui zusammenhängen.<br />
polymorphie heißt, dass man fröhlich vererbt hat.<br />
code für ersteres hängt von deinem system ab. für das zweite sieht es bspw so aus:</p>
<pre><code>class base{
virtual int lustigefunktion(){return 7;}
};
class child :public base
{
virtual int lustigefunktion(){return 8;}
};
</code></pre>
<p>ja, ein noch dümmeres beispiel ist mir nicht eingefallen. <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/1541711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541711</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Sun, 06 Jul 2008 08:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 08:44:19 GMT]]></title><description><![CDATA[<p>Ich glaube, er meinte <em>virtuelle</em> Klassen. Wobei es auch diese nicht gibt, sondern nur virtuelle Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541715</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 06 Jul 2008 08:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 09:36:45 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Ich glaube, er meinte <em>virtuelle</em> Klassen. Wobei es auch diese nicht gibt, sondern nur virtuelle Methoden.</p>
</blockquote>
<p>Es gibt aber virtuelle Basisklassen. Und da Polymorphie in den meisten Büchern zum abwinken erklärt wird, während die virtuellen Basisklassen oft nur schnell erwähnt werden, würde mich es nicht erstaunen, wenn es um diese geht.</p>
<p>Virtuelle Basisklassen, aus mehreren mach eins:</p>
<pre><code class="language-cpp">class CBase
{
private:
	int m_iIndex;

public:
	CBase(int iIndex = 0) : m_iIndex(iIndex) { };
	virtual ~CBase() { };

public:
	void base_method() { std::cout &lt;&lt; &quot;base_method of base index: &quot; &lt;&lt; m_iIndex &lt;&lt; std::endl; };
};

class CLevel : public virtual CBase // (1)
{
public:
	CLevel() : CBase(1) { };
	virtual ~CLevel() { };
};

class CTest : public virtual CBase  // (2)
{
public:
	CTest() : CBase(2) { };
	virtual ~CTest() { };
};

class CTestLevel : public CLevel, public CTest
{
public:
	CTestLevel() : CLevel(), CTest() { };
	virtual ~CTestLevel() { };
};
</code></pre>
<p>Dank dem <code>virtual</code> bei (1) und (2) ist CTestLevel nur einmal von CBase abgeleitet. Würde man das virtual weglassen, so wäre CTestLevel zweimal von CBase abgeleitet, einmal über CLevel und einmal über CTest.</p>
<p>Wenn man den Code oben benutzt, dann sieht das so aus:</p>
<pre><code class="language-cpp">CTestLevel TestLevel;
TestLevel.base_method(); // Gibt 0 aus. Dies kommt daher, weil der Konstruktor von CBase in CTestLevel aufgerufen wird. (-&gt; Defaultkonstruktor).
</code></pre>
<p>Wenn man das virtual weglassen würde, dann würde der Compiler meckern, dass base_method nicht eindeutig definierbar ist, da es zwei davon in CTestLevel hat. Also müsste man es anders aufrufen:</p>
<pre><code class="language-cpp">CTestLevel TestLevel;
TestLevel.CLevel::base_method(); // Gibt 1 aus.
TestLevel.CTest::base_method(); // Gibt 2 aus.
</code></pre>
<p>Noch Fragen?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541745</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 06 Jul 2008 09:36:45 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 09:38:44 GMT]]></title><description><![CDATA[<p>Dravere, stimmt, daran hatte ich gar nicht gedacht (ich arbeite in C++ kaum mit OOP), wahrscheinlich war das gemeint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541746</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 06 Jul 2008 09:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Polymorphie und Visuelle Klassen on Sun, 06 Jul 2008 11:30:27 GMT]]></title><description><![CDATA[<p>Oder abstrakte Klassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541821</guid><dc:creator><![CDATA[Wababababaa huha]]></dc:creator><pubDate>Sun, 06 Jul 2008 11:30:27 GMT</pubDate></item></channel></rss>