<?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[Mehrfachvererbung in C++]]></title><description><![CDATA[<p>Tach!</p>
<p>Ich bilde mich momentan im Bereich Mehrfache Vererbung weiter. Dabei begreife ich noch nicht alles.</p>
<p>Das Vererbungsverhältnis des Codes als Diagramm:</p>
<pre><code>Klasse1
       ^  ^
      /    \
     /      \
 Klasse2    Klasse3
    ^         ^
     \       / 
      \     /
       Klasse4
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Klasse1 {
	int kl1; Klasse1(int nr):kl1(nr){
	}
};

class Klasse2 : virtual public Klasse1 {
	int kl2; public: Klasse2(int nr):Klasse1(5),kl2(nr){
	}
};

class Klasse3 : virtual public  Klasse1 {
	int kl3;public: Klasse3(int nr):Klasse1(5),kl3(nr){
	}
};

class Klasse4 : public Klasse2, public Klasse3 {
	int kl4;public: Klasse4():Klasse1(1),Klasse2(2),Klasse3(3){
	}
};

int main(){
	std::cout &lt;&lt; &quot;Grösse Klasse1: &quot; &lt;&lt; sizeof(Klasse1) &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse2: &quot; &lt;&lt; sizeof(Klasse2)&lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse4: &quot; &lt;&lt; sizeof(Klasse4)&lt;&lt; std::endl;
}
</code></pre>
<p><strong>Ausgabe:</strong><br />
Grösse Klasse1: 4<br />
Grösse Klasse2: 12<br />
Grösse Klasse4: 24</p>
<p>Weshalb ist sizeof(Klasse2) = 12 und sizeof(Klasse4) = 24 ?</p>
<p>Danke für eure Hilfe.</p>
<p>Simon.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247006/mehrfachvererbung-in-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 15:57:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247006.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Aug 2009 20:54:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrfachvererbung in C++ on Tue, 04 Aug 2009 20:54:54 GMT]]></title><description><![CDATA[<p>Tach!</p>
<p>Ich bilde mich momentan im Bereich Mehrfache Vererbung weiter. Dabei begreife ich noch nicht alles.</p>
<p>Das Vererbungsverhältnis des Codes als Diagramm:</p>
<pre><code>Klasse1
       ^  ^
      /    \
     /      \
 Klasse2    Klasse3
    ^         ^
     \       / 
      \     /
       Klasse4
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Klasse1 {
	int kl1; Klasse1(int nr):kl1(nr){
	}
};

class Klasse2 : virtual public Klasse1 {
	int kl2; public: Klasse2(int nr):Klasse1(5),kl2(nr){
	}
};

class Klasse3 : virtual public  Klasse1 {
	int kl3;public: Klasse3(int nr):Klasse1(5),kl3(nr){
	}
};

class Klasse4 : public Klasse2, public Klasse3 {
	int kl4;public: Klasse4():Klasse1(1),Klasse2(2),Klasse3(3){
	}
};

int main(){
	std::cout &lt;&lt; &quot;Grösse Klasse1: &quot; &lt;&lt; sizeof(Klasse1) &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse2: &quot; &lt;&lt; sizeof(Klasse2)&lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse4: &quot; &lt;&lt; sizeof(Klasse4)&lt;&lt; std::endl;
}
</code></pre>
<p><strong>Ausgabe:</strong><br />
Grösse Klasse1: 4<br />
Grösse Klasse2: 12<br />
Grösse Klasse4: 24</p>
<p>Weshalb ist sizeof(Klasse2) = 12 und sizeof(Klasse4) = 24 ?</p>
<p>Danke für eure Hilfe.</p>
<p>Simon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755382</guid><dc:creator><![CDATA[Simon_Wi]]></dc:creator><pubDate>Tue, 04 Aug 2009 20:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung in C++ on Tue, 04 Aug 2009 21:23:32 GMT]]></title><description><![CDATA[<p>So ist der Quellcode übersichtlicher.<br />
Liebe Grüsse<br />
Simon.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Klasse1 {
	int kl1; 
	Klasse1(int nr):kl1(nr){}
};

class Klasse2 : virtual public Klasse1 {
	int kl2;
public:
	Klasse2(int nr):Klasse1(5),kl2(nr){}
};

class Klasse3 : virtual public  Klasse1 {
	int kl3;
public:
	Klasse3(int nr):Klasse1(5),kl3(nr){}
};

class Klasse4 : public Klasse2, public Klasse3 {
	int kl4;
public:
	Klasse4():Klasse1(1),Klasse2(2),Klasse3(3){}
};

int main(){
	std::cout &lt;&lt; &quot;Grösse Klasse1: &quot; &lt;&lt; sizeof(Klasse1) &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse2: &quot; &lt;&lt; sizeof(Klasse2)&lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Grösse Klasse4: &quot; &lt;&lt; sizeof(Klasse4)&lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1755398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755398</guid><dc:creator><![CDATA[Simon_Wi]]></dc:creator><pubDate>Tue, 04 Aug 2009 21:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung in C++ on Wed, 05 Aug 2009 00:47:38 GMT]]></title><description><![CDATA[<p>virtual sorgt dafür, dass die Klasse sich die Vererbung merkt. Ich nehme an, dass das virtual der Klasse also noch einen Pointer gibt der Größe 4 Bytes.<br />
Klasse2 hat also 4 Byte vom int, 4 Byte vom int der Basisklasse + 4 Byte von dem von virtual angelegtem Pointer.<br />
Klasse 4 hat 4 Bytes von den ints von Klasse 1, 2 und 3, selbst ein int mit 4 Bytes und scheinbar zwei Pointer, wegen 2 Basisklassen.</p>
<p>edit:<br />
richtig, der Standard schreibt hier gar nix vor. Und es können bei Klassen noch viele andere Faktoren reinspielen, aber für diesen Fall, denke ich dürfte es das sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755400</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Wed, 05 Aug 2009 00:47:38 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung in C++ on Tue, 04 Aug 2009 23:12:43 GMT]]></title><description><![CDATA[<p>Ich glaube, dazu kann man keine allgemeine Aussage treffen. Das ist doch sehr implementierungsabhängig.</p>
<p>Wandle die Member vom Typ int in char um und teste mit verschiedenen Compilern, dann fällt sofort auf, dass man die Rechnung nicht so einfach machen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755441</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Tue, 04 Aug 2009 23:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrfachvererbung in C++ on Thu, 06 Aug 2009 21:36:16 GMT]]></title><description><![CDATA[<p>Danke für die Auflösung.</p>
<p>Liebe Grüsse<br />
Simon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756635</guid><dc:creator><![CDATA[Simon_Wi]]></dc:creator><pubDate>Thu, 06 Aug 2009 21:36:16 GMT</pubDate></item></channel></rss>