<?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[Initialisierungsleiste bei geerbter Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich die Klasse A habe und mit meiner Klasse B dann davon erbe übernehme ich ja auch alle Attribute. Wenn ich jetzt bei B noch weitere Attribute hinzufüge und im Constructor dann alle per Initialisierungsleiste setzten möchte, welche Attribute muss ich dann zuerst hinschreiben?</p>
<pre><code class="language-cpp">class A
{
public:
    int a,b;
};

class B : public A
{
public:
    int c,d;
    B( void );
};

//Muss ich jetzt 
B::B( void ) : a( 1 ),
               b( 2 ),
               c( 3 ),
               d( 4 )
{
}

//oder

B::B( void ) : c( 3 ),
               d( 4 ),
               a( 1 ),
               b( 2 )
{
}

//schreiben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/185545/initialisierungsleiste-bei-geerbter-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:14:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185545.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jun 2007 18:37:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Initialisierungsleiste bei geerbter Klasse on Tue, 26 Jun 2007 18:37:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich die Klasse A habe und mit meiner Klasse B dann davon erbe übernehme ich ja auch alle Attribute. Wenn ich jetzt bei B noch weitere Attribute hinzufüge und im Constructor dann alle per Initialisierungsleiste setzten möchte, welche Attribute muss ich dann zuerst hinschreiben?</p>
<pre><code class="language-cpp">class A
{
public:
    int a,b;
};

class B : public A
{
public:
    int c,d;
    B( void );
};

//Muss ich jetzt 
B::B( void ) : a( 1 ),
               b( 2 ),
               c( 3 ),
               d( 4 )
{
}

//oder

B::B( void ) : c( 3 ),
               d( 4 ),
               a( 1 ),
               b( 2 )
{
}

//schreiben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1314253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314253</guid><dc:creator><![CDATA[Initi]]></dc:creator><pubDate>Tue, 26 Jun 2007 18:37:24 GMT</pubDate></item><item><title><![CDATA[Reply to Initialisierungsleiste bei geerbter Klasse on Tue, 26 Jun 2007 20:04:21 GMT]]></title><description><![CDATA[<p>In einem Konstruktor können nur Member der eigenen Klasse und nicht die der Basisklasse initialisiert werden. Aber man kann den Konstruktor der Basisklasse in - bzw. vor - der Initialisierungsliste aufrufen, der dann seinerseits die Member der Basisklasse initialisiert. Also etwa so:</p>
<pre><code class="language-cpp">class A
{
public:
    A()
        : a( 1 ), b( 2 )
    {}
    A( int aa, int bb )
        : a( aa ), b( bb )
    {}
    int a,b;
};

class B : public A
{
public:
    B();
    int c,d;
};

B::B() 
    : A()  // oder : A( -1, -2 )
    , c( 3 )
    , d( 4 )
{}
</code></pre>
<p>Die Reihenfolge der Initialisierung geschieht immer in der Reihenfolge mit der die Member in der Klasse deklariert sind. Und das ist unabhängig von der Reihenfolge in der Initialisierungsliste.<br />
Eine Basisklasse wird imer vor den eigenen Member initialisiert.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314320</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 26 Jun 2007 20:04:21 GMT</pubDate></item></channel></rss>