<?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[Frage zur Vererbung]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Frage zur Vererbung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Account
{
  private:
    int   AccountNr;
    //...

  public:
    // Defaultconstructor
    Account () : AccountNr(999)
    { cout &lt;&lt; &quot;1: Account(), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl;  }

    // Parameterconstructor
    Account (int aNr) : AccountNr(aNr)
    { cout &lt;&lt; &quot;2: Account(int), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl; }

};

class Giroaccount: public Account
{
  private:
    float Credit;
    // ...

  public:
    Giroaccount () : Credit(2000)
    {cout &lt;&lt; &quot;4: - Giroaccount(), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

    Giroaccount (float d) : Credit(d)
    { cout &lt;&lt; &quot;5: - Giroaccount(float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

    Giroaccount (int aNr, float d) : Account(aNr), Credit(d)
    { cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

};

int main()
{
  Giroaccount a, b(5500.0), c(123,1000.0);
  { cout &lt;&lt; &quot;Press any key to continue&quot; &lt;&lt; endl; }
getchar();
return 1;
}
</code></pre>
<p>Wie nennt man z.B. die folgende Schreibweise:</p>
<pre><code class="language-cpp">Giroaccount () : Credit(2000)
</code></pre>
<p>Ich kannte das bisher nur so (zumindest von JAVA her):</p>
<pre><code class="language-cpp">Giroaccount ()
    {
       Credit = 2000;
                cout &lt;&lt; &quot;4: - Giroaccount(), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }
</code></pre>
<p>Beim erzeugen eines Objektes einer Subklasse muss ja der Konstruktor der Superklasse auch aufgerufen werden.<br />
Aus Java kannt ich das mit dem Schlüsselwort &quot;super&quot;.<br />
C++ kennt annscheinend das Schlüsselwort super nicht?</p>
<p>Bei diesem Konstruktor:</p>
<pre><code class="language-cpp">Giroaccount (int aNr, float d) : Account(aNr), Credit(d)
    { cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }
</code></pre>
<p>Wird ja nicht der Standardkonstruktor der Superklasse aufgerufen sondern der selbst erstellte mit einem Parameter.</p>
<p>Die Schreibweise ist für mich etwas ungewohnt.</p>
<p>So wie ich mir das forstelle funktioniert das leider nicht:</p>
<pre><code class="language-cpp">Giroaccount (int aNr, float d)
    {
    Account(aNr);
    Credit = d;
                 cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl; 

                 }
</code></pre>
<p>Wie könnte man das sonst schreiben?</p>
<p>Vielen DAnk!</p>
<p>Viele Grüße</p>
<p>Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278005/frage-zur-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:35:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278005.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Nov 2010 11:11:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Vererbung on Sun, 28 Nov 2010 11:11:22 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Frage zur Vererbung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Account
{
  private:
    int   AccountNr;
    //...

  public:
    // Defaultconstructor
    Account () : AccountNr(999)
    { cout &lt;&lt; &quot;1: Account(), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl;  }

    // Parameterconstructor
    Account (int aNr) : AccountNr(aNr)
    { cout &lt;&lt; &quot;2: Account(int), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl; }

};

class Giroaccount: public Account
{
  private:
    float Credit;
    // ...

  public:
    Giroaccount () : Credit(2000)
    {cout &lt;&lt; &quot;4: - Giroaccount(), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

    Giroaccount (float d) : Credit(d)
    { cout &lt;&lt; &quot;5: - Giroaccount(float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

    Giroaccount (int aNr, float d) : Account(aNr), Credit(d)
    { cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }

};

int main()
{
  Giroaccount a, b(5500.0), c(123,1000.0);
  { cout &lt;&lt; &quot;Press any key to continue&quot; &lt;&lt; endl; }
getchar();
return 1;
}
</code></pre>
<p>Wie nennt man z.B. die folgende Schreibweise:</p>
<pre><code class="language-cpp">Giroaccount () : Credit(2000)
</code></pre>
<p>Ich kannte das bisher nur so (zumindest von JAVA her):</p>
<pre><code class="language-cpp">Giroaccount ()
    {
       Credit = 2000;
                cout &lt;&lt; &quot;4: - Giroaccount(), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }
</code></pre>
<p>Beim erzeugen eines Objektes einer Subklasse muss ja der Konstruktor der Superklasse auch aufgerufen werden.<br />
Aus Java kannt ich das mit dem Schlüsselwort &quot;super&quot;.<br />
C++ kennt annscheinend das Schlüsselwort super nicht?</p>
<p>Bei diesem Konstruktor:</p>
<pre><code class="language-cpp">Giroaccount (int aNr, float d) : Account(aNr), Credit(d)
    { cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl;  }
</code></pre>
<p>Wird ja nicht der Standardkonstruktor der Superklasse aufgerufen sondern der selbst erstellte mit einem Parameter.</p>
<p>Die Schreibweise ist für mich etwas ungewohnt.</p>
<p>So wie ich mir das forstelle funktioniert das leider nicht:</p>
<pre><code class="language-cpp">Giroaccount (int aNr, float d)
    {
    Account(aNr);
    Credit = d;
                 cout &lt;&lt; &quot;6: - Giroaccount(int,float), Cred.: &quot; &lt;&lt; Credit&lt;&lt; endl; 

                 }
</code></pre>
<p>Wie könnte man das sonst schreiben?</p>
<p>Vielen DAnk!</p>
<p>Viele Grüße</p>
<p>Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986963</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Sun, 28 Nov 2010 11:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Vererbung on Sun, 28 Nov 2010 11:26:09 GMT]]></title><description><![CDATA[<p>Mahlzeit,</p>
<p>Sören20 schrieb:</p>
<blockquote>
<p>Wie nennt man z.B. die folgende Schreibweise:</p>
<pre><code class="language-cpp">Giroaccount () : Credit(2000)
</code></pre>
</blockquote>
<p>Das nennt man Initialisierungsliste.</p>
<p>Sören20 schrieb:</p>
<blockquote>
<p>Ich kannte das bisher nur so (zumindest von JAVA her):</p>
</blockquote>
<p>Das kannst du in C++ natürlich auch so machen, aber es ist effizienter, wenn du die Variablen in einer Initialisierungsliste initialisierst. Damit werden sie sofort initialisiert und nicht erst erzeugt und dann initialisiert. Bei const und Referen-Membern musst du sogar eine Initialisierungsliste nehmen.</p>
<p>Sören20 schrieb:</p>
<blockquote>
<p>C++ kennt annscheinend das Schlüsselwort super nicht?</p>
</blockquote>
<p>Richtig. Du kannst allerdings Basisklassen-Methoden aufrufen mit Basisklasse::Methodenname()</p>
<p>Sören20 schrieb:</p>
<blockquote>
<p>Wie könnte man das sonst schreiben?</p>
</blockquote>
<p>Garnicht. Wenn du explizit einen Basisklassen Ctor aufrufen willst, musst du das in der Initialisierungsliste machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986970</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Sun, 28 Nov 2010 11:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Vererbung on Sun, 28 Nov 2010 12:09:08 GMT]]></title><description><![CDATA[<p>Danke für die Antwort!</p>
<p>Wenn ich aus der Subklasse z.B. eine Protected Methode aus der Superklasse aufrufen möchte, wie funktioniert das dann?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Account
{
  private:
    int   AccountNr;
    //...

  public:
    // Defaultconstructor
    Account () : AccountNr(999)
    { cout &lt;&lt; &quot;1: Account(), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl;  }

    // Parameterconstructor
    Account (int aNr) : AccountNr(aNr)
    { cout &lt;&lt; &quot;2: Account(int), AccountNr: &quot; &lt;&lt; AccountNr&lt;&lt; endl; }

    protected:
    int testen() 
    {
         cout &lt;&lt; &quot;TEST HAT FUNKTIONIERT!!!&quot; &lt;&lt;endl;
         return 1;
}

};

class Giroaccount: public Account
{
  private:
    float Credit;
    int test;

   //das funktioniert nicht
   test = Account::testen();

   //Das funktioniert einwandfrei 
    public:
    void test2 () {

    test = Account:: testen();

     }

    // ...
</code></pre>
<p>Ich hatte jetzt schon länger nichts mehr mit Java zu tun, allerdings dachte ich das man z.B.</p>
<pre><code class="language-java">test = this.testen();
</code></pre>
<p>außerhalb einer Methode innerhalb der Klasse aufrufen kann?</p>
<p>Oder funktioniert das gar nicht?</p>
<p>Viele Grüße</p>
<p>Sören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986984</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Sun, 28 Nov 2010 12:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Vererbung on Sun, 28 Nov 2010 15:07:01 GMT]]></title><description><![CDATA[<p>Einfach ganz normal</p>
<pre><code class="language-cpp">testen();
</code></pre>
<p>aufrufen. Du kannst auch</p>
<pre><code class="language-cpp">this-&gt;testen();
</code></pre>
<p>schreiben. Der Aufruf muss aber in einer Funktion stehen, das kannst du nicht einfach in die Klasse schreiben. Wenn du Member damit initialisieren willst, benutze den Konstruktor und dessen Initialisierungsliste.</p>
<p>Übrigens würde ich in C++ eher von Basis- und abgeleiteter Klasse als von Super- und Subklasse sprechen. Dann versteht dich auch jeder. <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/1987070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987070</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Nov 2010 15:07:01 GMT</pubDate></item></channel></rss>