<?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[Vererbung - Verständnisfrage]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Ich habe da eine Frage bezüglich der Vererbung:</p>
<pre><code class="language-cpp">class BaseClass
{
public:
    BaseClass()
    : data(0)
    {
       //...
    }
protected:
int data
} ;

class DerivedClass : public BaseClass
{
public:
    DerivedClass()
    : data2(0)
    {
       //...
    }
private:
    int data2 ;
};
</code></pre>
<p>Ich hoffe, dass ich jetzt keine Fehler beim Code habe. Sollte alles stimmen, meine Frage lautet, wenn ich jetzt ein Objekt erstelle</p>
<pre><code class="language-cpp">DerivedClass Objekt ;
</code></pre>
<p>Wird auch implizit der Konstruktor der Basisklasse aufgerufen?</p>
<p>Ich bedanke mich im voraus und hoffe, dass ihr meine Frage verstanden habt.</p>
<p>Grüße Michi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261562/vererbung-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 07:28:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261562.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Feb 2010 15:00:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung - Verständnisfrage on Sat, 20 Feb 2010 15:00:14 GMT]]></title><description><![CDATA[<p>Hey Leute!</p>
<p>Ich habe da eine Frage bezüglich der Vererbung:</p>
<pre><code class="language-cpp">class BaseClass
{
public:
    BaseClass()
    : data(0)
    {
       //...
    }
protected:
int data
} ;

class DerivedClass : public BaseClass
{
public:
    DerivedClass()
    : data2(0)
    {
       //...
    }
private:
    int data2 ;
};
</code></pre>
<p>Ich hoffe, dass ich jetzt keine Fehler beim Code habe. Sollte alles stimmen, meine Frage lautet, wenn ich jetzt ein Objekt erstelle</p>
<pre><code class="language-cpp">DerivedClass Objekt ;
</code></pre>
<p>Wird auch implizit der Konstruktor der Basisklasse aufgerufen?</p>
<p>Ich bedanke mich im voraus und hoffe, dass ihr meine Frage verstanden habt.</p>
<p>Grüße Michi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858671</guid><dc:creator><![CDATA[Michi94]]></dc:creator><pubDate>Sat, 20 Feb 2010 15:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung - Verständnisfrage on Sat, 20 Feb 2010 15:09:30 GMT]]></title><description><![CDATA[<p>Ja. Wenn du keinen expliziten Konstruktor angibst, wird der Standardkonstruktor aufgerufen. Wenn die Basisklasse keinen solchen besitzt, musst du selbst einen angeben. Das kannst du in der Initialisierungsliste erledigen:</p>
<pre><code class="language-cpp">class BaseClass
{
    public:
        BaseClass(int i)
        : i(i)
        {
        }
    private:
        int i;
};

class DerivedClass : public BaseClass
{
    public:
        DerivedClass(int i, double d)
        : BaseClass(i) // &lt;- Basisklassenkonstruktoraufruf
        , d(d)
        {
        }
    private:
        double d;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1858683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858683</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 20 Feb 2010 15:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung - Verständnisfrage on Sat, 20 Feb 2010 15:16:24 GMT]]></title><description><![CDATA[<p>Hallo Nexus,</p>
<p>vielen Dank für deine Antwort <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="🙂"
    /><br />
Also dann hat sich das mit der Konstruktorfrage erledigt. Danke.</p>
<p>Beim Betrachten deines Codes ist mir jetzt aber was aufgefallen.<br />
Wieso benutzt du in der BaseClass ein &gt;private&lt; statt einem &gt;protected&lt; ?</p>
<p>Ich habe das so verstanden, dass wenn man die Attribute weitervererben will sie als protected markieren muss. Könntest du mir das vielleicht noch erklären ?</p>
<p>Grüße Michi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858686</guid><dc:creator><![CDATA[Michi94]]></dc:creator><pubDate>Sat, 20 Feb 2010 15:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung - Verständnisfrage on Sat, 20 Feb 2010 15:39:40 GMT]]></title><description><![CDATA[<p>Michi94 schrieb:</p>
<blockquote>
<p>Beim Betrachten deines Codes ist mir jetzt aber was aufgefallen.<br />
Wieso benutzt du in der BaseClass ein &gt;private&lt; statt einem &gt;protected&lt; ?</p>
<p>Ich habe das so verstanden, dass wenn man die Attribute weitervererben will sie als protected markieren muss. Könntest du mir das vielleicht noch erklären ?</p>
</blockquote>
<p>Sicher. Grundsätzlich versuche ich, die Sichtbarkeit von Membervariablen und -funktionen soweit wie möglich einzuschränken. Die öffentliche Schnittstelle ( <code>public</code> -Bereich) soll klein sein, im Idealfall werden Funktionen als global deklariert, welche keinen direkten Zugriff auf private Member benötigen.</p>
<p>Im Normalfall hat man für die einzelnen Variablen auch Getter- und Setter (sofern damit Eigenschaften des Objekts repräsentiert werden). Das heisst, <code>BaseClass</code> könnte folgende öffentliche Methoden besitzen:</p>
<pre><code class="language-cpp">void SetI(int i);
int GetI() const;
</code></pre>
<p>Dadurch, dass man die Variable <code>i</code> privat macht, hat man keinen Zugriff mehr von ausserhalb, auch nicht in abgeleiteten Klassen. Man muss also die beiden Get- und Set-Methoden verwenden. Die Kapselung wird auf diese Weise erhöht. Denn je weniger Funktionen direkten Zugriff haben, desto mehr kannst du diesen Zugriff kontrollieren, lokal beschränken und Fehler vermeiden. Beim Debugging kannst du zum Beispiel eine Ausgabe in die Schnittstellen einbauen und somit alle Lese- und Schreibzugriffe auf die Variable mitloggen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858702</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 20 Feb 2010 15:39:40 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung - Verständnisfrage on Sat, 20 Feb 2010 16:07:06 GMT]]></title><description><![CDATA[<p>Verstehe, jetzt habe ich was dazu gelernt! <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="🙂"
    /><br />
Vielen Dank Nexus für deine Hilfsbereitschaft!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858716</guid><dc:creator><![CDATA[Michi94]]></dc:creator><pubDate>Sat, 20 Feb 2010 16:07:06 GMT</pubDate></item></channel></rss>