<?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]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
public:
        int f;
        A(int para);
};
A::A( int para) : f(para)
{

}

class B : public A
{
public:

};

int main(int argc, char* argv[])
{
A a(4);
// B b; // Compiler konnte Standardkonstruktor nicht für die Klasse 'B' generieren

B b();  // So funktioniert es

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>Hier muss ich jetzt nicht schreiben: B b();</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
public:
        int f;
};
class B : public A
{
public:
};

int main(int argc, char* argv[])
{
A a;
B b;

system(&quot;PAUSE&quot;);
return 0;
</code></pre>
<p>Wo ist der Unterschied zwischen: B b; und B b();</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310353/vererbung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 19:22:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310353.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Nov 2012 13:15:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 13:15:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
public:
        int f;
        A(int para);
};
A::A( int para) : f(para)
{

}

class B : public A
{
public:

};

int main(int argc, char* argv[])
{
A a(4);
// B b; // Compiler konnte Standardkonstruktor nicht für die Klasse 'B' generieren

B b();  // So funktioniert es

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>Hier muss ich jetzt nicht schreiben: B b();</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
public:
        int f;
};
class B : public A
{
public:
};

int main(int argc, char* argv[])
{
A a;
B b;

system(&quot;PAUSE&quot;);
return 0;
</code></pre>
<p>Wo ist der Unterschied zwischen: B b; und B b();</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269285</guid><dc:creator><![CDATA[suung]]></dc:creator><pubDate>Fri, 09 Nov 2012 13:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 13:23:53 GMT]]></title><description><![CDATA[<p>B b() ist überhaupt keine Variablendefinition, sondern die Deklaration einer Funktion b, die keine Parameter entgegen nimmt und ein B zurück gibt.</p>
<p>Warum im ersten Fall kein Defaultkonstruktor automatisch generiert werden kann ist dir aber klar, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269286</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Nov 2012 13:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 13:35:44 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Warum im ersten Fall kein Defaultkonstruktor automatisch generiert werden kann ist dir aber klar, oder?</p>
</blockquote>
<p>Das hängt wohl irgendwie mit der Vererbung zusammen.^^</p>
<p>Aber ich habs jetzt hinbekommen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
public:
        int f;
        A();
        A(int p);
};

A::A()
{ }

A::A (int p) : f(p)
{ }

class B : public A
{
public:
string name;

B();
B ( string s );

};

B::B()
{ }

B :: B ( string s ) : name(s)
{ }

int main(int argc, char* argv[])
{
A a(4);
B b(&quot;a&quot;);
B bb;

system(&quot;PAUSE&quot;);
return 0;
}
</code></pre>
<p>Wenn ich zuhause bin werd ich mal in meinem Buch das Kaptiel Vererbung aufschlagen. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269288</guid><dc:creator><![CDATA[suung]]></dc:creator><pubDate>Fri, 09 Nov 2012 13:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 13:41:44 GMT]]></title><description><![CDATA[<p>Die Sache ist, dass dein B auch ein A enthält. Wenn ein A nicht Default-konstruierbar ist, musst du angeben, wie dieses A, welches Teil von B ist, zu erzeugen ist. Schreib also nicht sinnlos leere Default-Konstruktoren. Frage dich: Macht es Sinn, A ohne Parameter erzeugen zu können? Ist das A dann trotzdem in einem gültigen Zustand (das heißt hier konkret, dass der Wert A::f nicht initialisiert ist)?<br />
Falls ein A nicht sinnvoll ohne Parameter erzeugt werden kann, musst du diese Parameter in der Initialisierungsliste von B angeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269295</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Nov 2012 13:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 14:36:06 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Macht es Sinn, A ohne Parameter erzeugen zu können?</p>
<p>Ist das A dann trotzdem in einem gültigen Zustand (das heißt hier konkret, dass der Wert A::f nicht initialisiert ist)?</p>
</blockquote>
<p>1. Nein, denn ich will ja die Variable f initialisieren.<br />
2. Nein, ich will doch gerade das dass f initialisiert ist.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Falls ein A nicht sinnvoll ohne Parameter erzeugt werden kann, musst du diese Parameter in der Initialisierungsliste von B angeben.</p>
</blockquote>
<p>Soll der Konstruktor aus A dann entfernt werden und in B eingebaut werden oder wie ist das zuverstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269326</guid><dc:creator><![CDATA[suung]]></dc:creator><pubDate>Fri, 09 Nov 2012 14:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Fri, 09 Nov 2012 14:43:25 GMT]]></title><description><![CDATA[<p>B muss in seinem Konstruktor seinen A-Teil initialisieren:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class A
{
public:
 int f;
 A(int para);
};
A::A( int para) : f(para) {}

class B : public A
{
public:
 B(int para); 
};
B::B(int para): A(para) {}   // Guckst du hier

int main(int argc, char* argv[])
{
A a(4);
B b(4); // So ist es nun richtig
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2269330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269330</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Nov 2012 14:43:25 GMT</pubDate></item></channel></rss>