<?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[einbettung von klassen]]></title><description><![CDATA[<p>Es geht um folgenden Quellcode:</p>
<pre><code class="language-cpp">include &lt;iosteam&gt;
using namespace std;

class Eins
{
   public: 
           void f() { cout &lt;&lt; &quot;Eins \n&quot;;}
};

class Zwei : public Eins
{
public:
void f() {cout &lt;&lt; &quot;Zwei \n&quot;;}
};

int main()
{
Eins x;
Zwei y;
Eins* ptr= &amp;x;
ptr-&gt; f()
ptr = &amp;y;
ptr -&gt; f();
}
</code></pre>
<p>Die Aufgabe lautet: was wird auf den bildschirm ausgegeben und begründen sie das ergebnis.</p>
<p>ausgabe: eins<br />
eins</p>
<p>gut man erzeugt ein objekt der klasse eins und greift dann per pointer auf die funktion zurück. deshalb ist die erste ausgabe recht klar, wobei doch das objekt dafür vollkommen irrelevant ist, da die funktion doch vom typ void ist oder?</p>
<p>nun die zweite ausgabe. der pointer zeigt nun auf ein objekt der klasse y,<br />
allerding ist der pointer vom typ eins und kann somit nicht auf die funktion vom typ zwei zugreifen, daher keine ausgabe. da im public bereich klasse eins ausgegeben wird, wird somit in gewisser weise auf funktion der klasse eins zugegriffen oder wie kann man das verstehen?</p>
<p>wär cool wenn jemand helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298310/einbettung-von-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 22:32:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298310.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Jan 2012 17:24:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to einbettung von klassen on Tue, 17 Jan 2012 17:24:33 GMT]]></title><description><![CDATA[<p>Es geht um folgenden Quellcode:</p>
<pre><code class="language-cpp">include &lt;iosteam&gt;
using namespace std;

class Eins
{
   public: 
           void f() { cout &lt;&lt; &quot;Eins \n&quot;;}
};

class Zwei : public Eins
{
public:
void f() {cout &lt;&lt; &quot;Zwei \n&quot;;}
};

int main()
{
Eins x;
Zwei y;
Eins* ptr= &amp;x;
ptr-&gt; f()
ptr = &amp;y;
ptr -&gt; f();
}
</code></pre>
<p>Die Aufgabe lautet: was wird auf den bildschirm ausgegeben und begründen sie das ergebnis.</p>
<p>ausgabe: eins<br />
eins</p>
<p>gut man erzeugt ein objekt der klasse eins und greift dann per pointer auf die funktion zurück. deshalb ist die erste ausgabe recht klar, wobei doch das objekt dafür vollkommen irrelevant ist, da die funktion doch vom typ void ist oder?</p>
<p>nun die zweite ausgabe. der pointer zeigt nun auf ein objekt der klasse y,<br />
allerding ist der pointer vom typ eins und kann somit nicht auf die funktion vom typ zwei zugreifen, daher keine ausgabe. da im public bereich klasse eins ausgegeben wird, wird somit in gewisser weise auf funktion der klasse eins zugegriffen oder wie kann man das verstehen?</p>
<p>wär cool wenn jemand helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169232</guid><dc:creator><![CDATA[n00b123]]></dc:creator><pubDate>Tue, 17 Jan 2012 17:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to einbettung von klassen on Tue, 17 Jan 2012 17:29:13 GMT]]></title><description><![CDATA[<p>Der Zeiger Eins * zeigt immer auf ein Objekt das vom Typ Eins oder zumindest von Eins abgeleitet ist. Da Zwei von Eins abgeleitet ist, kann Eins * auch auf ein Objekt vom Typ Zwei zeigen. Damit hat man aber auch nur Zugriff auf das, was Eins an Möglichkeiten bietet. Daher ist die Ausgabe in beiden Fällen auch &quot;Eins&quot;, da die Funktion von Eins aufgerugen wird.</p>
<p>Anders würde das aussehen, wenn man die Funktion virtuell (virtual) machen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169235</guid><dc:creator><![CDATA[hjk]]></dc:creator><pubDate>Tue, 17 Jan 2012 17:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to einbettung von klassen on Tue, 17 Jan 2012 17:29:31 GMT]]></title><description><![CDATA[<p>Es wird zweimal &quot;Eins&quot; ausgegeben,<br />
da den Compiler in deinem Fall nur der Typ des Zeigers interessiert.<br />
Der zeigt auf Eins und damit wird auch dessen Methode aufgerufen.</p>
<p>wenn du möchtest, dass die Methode der Kindklasse auch über einen Basisklassenzeiger aufgerufen werden kann, musst du die Methode virtuell machen.<br />
Darauf basiert das Konzept der Polymorphie.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">include &lt;iosteam&gt;
using namespace std;

class Eins
{
public:
    virtual void f() { cout &lt;&lt; &quot;Eins \n&quot;; }
};

class Zwei : public Eins
{
public:
    virtual void f() {cout &lt;&lt; &quot;Zwei \n&quot;; }
};

int main()
{
    Eins x;
    Zwei y;
    Eins* ptr = &amp;x;
    ptr-&gt;f()
    ptr = &amp;y;
    ptr-&gt;f();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2169236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169236</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Tue, 17 Jan 2012 17:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to einbettung von klassen on Tue, 17 Jan 2012 17:32:02 GMT]]></title><description><![CDATA[<p>die 2. ausgabe ist doch aber nur eins, da die erste klasse in die zweite eingebettet ist oder? sonst müsste er nen fehler anzeigen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169237</guid><dc:creator><![CDATA[n00b123]]></dc:creator><pubDate>Tue, 17 Jan 2012 17:32:02 GMT</pubDate></item><item><title><![CDATA[Reply to einbettung von klassen on Tue, 17 Jan 2012 17:36:22 GMT]]></title><description><![CDATA[<p>n00b123 schrieb:</p>
<blockquote>
<p>die 2. ausgabe ist doch aber nur eins, da die erste klasse in die zweite eingebettet ist oder? sonst müsste er nen fehler anzeigen</p>
</blockquote>
<p>Das nennt man nicht einbetten, sondern vererben. Die Klasse Zwei hat von der Klasse Eins geerbt, ja.</p>
<p>Es würde ohne Vererbung nicht funktionieren, da sich Zwei dann nicht in Eins umwandeln lassen würde. Genau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169238</guid><dc:creator><![CDATA[fhgfhgh]]></dc:creator><pubDate>Tue, 17 Jan 2012 17:36:22 GMT</pubDate></item></channel></rss>