<?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[Redefinieren: Satz aus meinem Buch verstehe ich nicht.]]></title><description><![CDATA[<p>In meinem Buch steht:</p>
<blockquote>
<p>Erzeugt eine abgeleitet Klasse eine Funktion mit demselben Rückgabetyp und derselben Signatur wie eine Elementfunktion in der Basisklasse, aber mit einer neuen Implementierung, spricht man vom &quot;Redefinieren&quot; oder &quot;Überschreiben&quot; dieser Methode.</p>
</blockquote>
<p>Verstehe ich nicht. Es reicht doch einfach wenn der Name in der abgeleitet Klasse den gleichen Namen wie eine Methode in der Basisklasse hat oder? Wenn ich in der Basisklasse die Methode</p>
<pre><code class="language-cpp">void Say() const {cout &lt;&lt; &quot;Hallo\n&quot;;}
</code></pre>
<p>habe und in der abgeleiteten Klasse</p>
<pre><code class="language-cpp">int Say(int a) {cout &lt;&lt; &quot;Hans geht &quot; &lt;&lt; a &lt;&lt; &quot; Meter.\n&quot;;
                return a;
               }
</code></pre>
<p>Ist doch nun auch &quot;redefiniert&quot; oder? Und sie haben nicht denselben Rückgabetyp oder etwa die selbe Signatur.<br />
Kann mich jemand auklären? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173031/redefinieren-satz-aus-meinem-buch-verstehe-ich-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 12:15:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173031.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Feb 2007 00:07:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 00:10:59 GMT]]></title><description><![CDATA[<p>In meinem Buch steht:</p>
<blockquote>
<p>Erzeugt eine abgeleitet Klasse eine Funktion mit demselben Rückgabetyp und derselben Signatur wie eine Elementfunktion in der Basisklasse, aber mit einer neuen Implementierung, spricht man vom &quot;Redefinieren&quot; oder &quot;Überschreiben&quot; dieser Methode.</p>
</blockquote>
<p>Verstehe ich nicht. Es reicht doch einfach wenn der Name in der abgeleitet Klasse den gleichen Namen wie eine Methode in der Basisklasse hat oder? Wenn ich in der Basisklasse die Methode</p>
<pre><code class="language-cpp">void Say() const {cout &lt;&lt; &quot;Hallo\n&quot;;}
</code></pre>
<p>habe und in der abgeleiteten Klasse</p>
<pre><code class="language-cpp">int Say(int a) {cout &lt;&lt; &quot;Hans geht &quot; &lt;&lt; a &lt;&lt; &quot; Meter.\n&quot;;
                return a;
               }
</code></pre>
<p>Ist doch nun auch &quot;redefiniert&quot; oder? Und sie haben nicht denselben Rückgabetyp oder etwa die selbe Signatur.<br />
Kann mich jemand auklären? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226563</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 11 Feb 2007 00:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 00:13:21 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=oho#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=oho#Answ</a> <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/1226565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226565</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Feb 2007 00:13:21 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 00:49:38 GMT]]></title><description><![CDATA[<p>Muss beim Überladen einer Funktion der Rückgabetyp gleich sein?<br />
Ist das hier jetzt &quot;Überladen einer Funktion&quot; oder nicht?</p>
<pre><code class="language-cpp">void F1()
{
    cout &lt;&lt; &quot;F1\n&quot;;
}

int F1(int a)
{
    cout &lt;&lt; &quot;10\n&quot;;
}

int main()
{
    F1();
    F1(5);
    return 0;
}
</code></pre>
<p>Boah bin ganz verwirrt, den Link muss ich glaub noch 2-3mal durchlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226574</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 11 Feb 2007 00:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 01:33:58 GMT]]></title><description><![CDATA[<p>Nicht beim Ueberladen aber beim <strong>Ueberschreiben</strong>. Und ja, es ist Ueberladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226597</guid><dc:creator><![CDATA[Apollon]]></dc:creator><pubDate>Sun, 11 Feb 2007 01:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 01:42:22 GMT]]></title><description><![CDATA[<p>wenn du in der abgeleiteten klasse die funktion mit neuen argumenten und/oder neuem rückgabewert implementierst, wird die funktion nur überladen. beim aufruf wird z.B. durch typ/anzahl übergebener parameter entscheiden, welche implementation der funktion aufgerufen wird.<br />
-&gt;überladen</p>
<p>übernimmst du aber für die funktion in der abgeleiteten klasse name, rückgabetyp und argumentenliste der &quot;original&quot;-funktion, gibt es ja immernoch nur eine einzige &quot;version&quot; davon. wenn du also die funktion der abgeleiteten klasse aufrufst, wird (sofern du nicht explizit die implementierung der basisklasse aufrufst) immer diese implementation (aus der abgeleiteten klasse) der funktion aufgerufen.<br />
-&gt;redifiniert</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226600</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sun, 11 Feb 2007 01:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 03:33:56 GMT]]></title><description><![CDATA[<p>Die Terminologie ist vermutlich nicht ganz einheitlich, der Klarstellung wegen mache ich diesen Vorschlag:</p>
<p>Redefinition (redefinition): Die <em>erneute</em> Definition <em>einer</em> Entität. Innerhalb der selben Übersetzungseinheit ist dies in <strong>keinem</strong> Falle zulässig. In verschiedenen Übersetzungseinheiten ist dies erlaubt für Typ- und Templatedefinitionen sowie Inlinefunktionen. Ein typedef bewirkt - trotz des Schlüsselworts - eine Deklaration und keine Definition und darf daher beliebig wiederholt werden.</p>
<p>Verdeckung (name hiding): Ein Name kann in einem inneren Scope oder einer abgeleiteten Klasse erneut deklariert werden und verdeckt dann die äußere Deklaration. Die durch den Namen bezeichneten Entität kann dabei jeder Kategorie angehören. Ein Sonderfall besteht, wenn ein Klassen- oder Aufzählungsname im selben Scope mit dem Namen einer Funktion, eines Objekts oder einer Aufzählungskonstante zusammentrifft. Verdeckt also eine Funktion eine andere, so bestehen keinerlei Einschränkungen hinsichtlich ihres Typs.</p>
<p>Überladung (overloaded declarations): Mehrere Funktionen gleichen Namens können im selben Scope existieren, wenn sie sich hinsichtlich ihrer Parameterlisten (den Objektparameter von Memberfunktionen zähle ich hier für diesen Zweck dazu) unterscheiden. Statische Klassenfunktionen können nicht mit nichtstatischen überladen werden. Weder begründen unterschiedliche Rückgabetypen oder Exceptionspezifikationen Überladbarkeit noch werden jene durch diese Bedingt.</p>
<p>Man kann Verdeckung als vertikale und Überladung als horizontale Vielfachheit eines Namens begreifen.</p>
<p>Überschreibung (override): Die Deklaration einer (implizit virtuellen) Funktion, die eine (andernfalls nicht verdeckte) virtuellen Funktion in einer Basisklasse ersetzt (ein Aufruf über eine polymorphe Basis benutzt diese Funktion). Sie tut dies dann, wenn sie in ihren Parametern mit denen der geerbten Funktion übereinstimmt (bis auf die zwingende Kovarianz des Objektparameters) und in ihrem Rückgabetyp und der Exceptionspezifikation wenigstens genauso streng ist. Die Garantien hinsichtlich Rückgabetyp und Exceptionspezifikation dürfen strenger sein, d.h. ein Zeiger oder eine Referenz auf ein Klasse darf in der Überschreibung auf eine (öffentlich) abgeleitende Klasse verweisen. Auf die Problematik von Exceptionspezifikationen will ich hier nicht eingehen. Eine vergleichbare Kontravarianz für Funktionsparameter - wie sie in einigen anderen Sprachen existiert - ist nicht möglich. Sie würde zumindest problematisch sein, wenn noch Überladung oder Mehrfachvererbung hinzukommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226616</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 11 Feb 2007 03:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 11 Feb 2007 13:40:03 GMT]]></title><description><![CDATA[<p>vorschlag angenommen!</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226844</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Sun, 11 Feb 2007 13:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Tue, 13 Feb 2007 21:36:24 GMT]]></title><description><![CDATA[<p>So also ich habs irgendwie so teilweise kapiert, ich weiß zwar eigentlich wie man es anwendet aber mit den Bezeichnungen habe ich noch Probleme.<br />
Das hier wäre ja jetzt Redefinieren (da gleicher Rückgabetyp und gleiche Signatur):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void Speak() {cout &lt;&lt; &quot;TIER\n&quot;;}
};

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    void Speak() {cout &lt;&lt; &quot;HUND\n&quot;;} //wird hier redefiniert, da ja schon mal in Basisklasse Tier
};

int main()
{
    Tier BigAnimal;
    Hund Bob;
    BigAnimal.Speak();
    Bob.Speak();
    return 0;
}
</code></pre>
<p>Aber was wäre den dann bitte das hier? Nach Definition: &quot;Erzeugt eine abgeleitet Klasse eine Funktion mit demselben Rückgabetyp und derselben Signatur wie eine Elementfunktion in der Basisklasse, aber mit einer neuen Implementierung, spricht man vom &quot;Redefinieren&quot; oder &quot;Überschreiben&quot; dieser Methode.&quot; kann es ja nicht Redefinieren sein! Aber für mich ist das eigentlich trotzdem das gleiche.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void Speak(int a) {cout &lt;&lt; &quot;TIER &quot; &lt;&lt; a &lt;&lt; &quot;\n&quot;;}
};

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    int Speak() {cout &lt;&lt; &quot;HUND\n&quot;;
                 return 120;
                }
};

int main()
{
    Tier BigAnimal;
    Hund Bob;
    BigAnimal.Speak(5);
    Bob.Speak();
    return 0;
}
</code></pre>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228404</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 13 Feb 2007 21:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Tue, 13 Feb 2007 21:42:53 GMT]]></title><description><![CDATA[<p>neine, es ist keine redifinition, es ist eine überladung, d.h., wenn du jetzt in deiner klasse &quot;Hund&quot; die methode &quot;speak&quot; aufrufen und ihr einen int-wert als parameter mitgeben würdest, würde die implementation aus der &quot;tier&quot;-klasse aufgerufen werden.</p>
<p>mfg,<br />
julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228413</guid><dc:creator><![CDATA[Julian__]]></dc:creator><pubDate>Tue, 13 Feb 2007 21:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Tue, 13 Feb 2007 21:47:33 GMT]]></title><description><![CDATA[<p>Also äh hab das vll. falsch verstanden, aber sowie ich es verstanden habe funktioniert es bei mir nicht.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void Speak(int a) {cout &lt;&lt; &quot;TIER &quot; &lt;&lt; a &lt;&lt; &quot;\n&quot;;}
};

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    int Speak() {cout &lt;&lt; &quot;HUND\n&quot;;
                 return 120;
                }
};

int main()
{
    Tier BigAnimal;
    Hund Bob;
    BigAnimal.Speak(5);
    Bob.Speak(10);
    return 0;
}
</code></pre>
<p>Compiling: C:\MinGW\Andi\ÜberschreibenÜberdeckenÜberladen.cpp<br />
C:\MinGW\Andi\ÜberschreibenÜberdeckenÜberladen.cpp: In function <code>int main()': C:\\MinGW\\Andi\\ÜberschreibenÜberdeckenÜberladen.cpp:27: error: no matching function for call to</code>Hund::Speak(int)'<br />
C:\MinGW\Andi\ÜberschreibenÜberdeckenÜberladen.cpp:17: note: candidates are: int Hund::Speak()<br />
Process terminated with status 1 (0 minutes, 0 seconds)<br />
2 errors, 0 warnings</p>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228415</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 13 Feb 2007 21:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Tue, 13 Feb 2007 23:26:26 GMT]]></title><description><![CDATA[<p>Ja das hat was mit der Namensuche zu tun. Sollte eigentlich in dem Link stehen ...<br />
Habe jetzt keine Lust das zu erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> , deswegen verweise ich mal an die Stelle ... ( Ich hoffe Hume hat nichts dagegen )</p>
<blockquote>
<p>Generell läuft die Suche nach der passenden Funktion in drei Schritten ab:</p>
<p>1. Bildung der Kandidatenmenge<br />
2. Auswahl der Funktionen mit passender Signatur aus der Kandidatenmenge<br />
3. Auswahl der am Besten passenden Funktion</p>
<p>Ausgehend vom Scope in dem der Aufruf steht, kommen alle die Funktionen in die Kandidatenmenge, die den selben Namen haben wie die aufzurufende Funktion. Existiert in dem Scope keine solche Funktion, wird der darüberliegende Scope durchsucht. <strong>Umschließende Scopes werden also nur berücksichtigt, wenn in den eingeschlossenen Scopes keine gleichnamige Funktion existiert.</strong></p>
</blockquote>
<p>Das markierte ist wichtig, d.h. er hört dann auf zu suchen und würde nie Tier::Speak(int) finden, weil er schon eine Funktion mit dem Namen Speak in Hund gefunden hat ....</p>
<p>So nebenbei: Man sollte nicht-virtuelle Memberfunktion nicht redefinieren.<br />
Spiele mal was mit Zeigern und so rum dann wirst du sehen, wieso etwas sich nicht so verhält wie es sollte <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="😉"
    /> ( Steht in Effective C++ was dazu )<br />
[Jaja ich verweise gerne auf das Buch <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="🙂"
    /> ]</p>
<p>Edit: In Exceptional steht auch ne Menge zu Überladen/Überdecken etc ... <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228442</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 13 Feb 2007 23:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 15:31:08 GMT]]></title><description><![CDATA[<p>Ich hab den Link jetzt nochmal richtig durchgearbeitet (<a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=oho#note_four" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=oho#note_four</a>) undauch alles gecheckt! Na na fast alles. Siehe folgendes Beispiel (sowas ähnliches kam auch in dem Link vor):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void func(int a);
    int func();
};

void Tier::func(int a)
{
    cout &lt;&lt; &quot;INT&quot; &lt;&lt; endl;
}

int Tier::func()
{
    cout &lt;&lt; &quot;VOID&quot; &lt;&lt; endl;
}

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    void func(float a);
};

void Hund::func(float a)
{
    cout &lt;&lt; &quot;FLOAT&quot; &lt;&lt; endl;
}

int main()
{
    Hund A;
    Tier &amp;B=A;

    return 0;
}
</code></pre>
<p>Was macht den genau:</p>
<pre><code class="language-cpp">Tier &amp;B=A;
</code></pre>
<p>?????<br />
Das würde ja heißen: &quot;B ist eine Referenz auf eine Tier Objekt&quot; Ja? Aber A ist doch ein Hund Objekt! Also äh hat das was mit Polymorphie zu tun? Ist &quot;Tier &amp;B=A&quot; sowas wie &quot;Tier *B= new Hund&quot;? Sowas kenn ich nämlich schon. Aber sowas wie &quot;Tier &amp;B=A;&quot; hab ich noch nie gesehen (peinlich?). Also in meinem ganzen C++ Buch kam sowas noch nicht vor. Mhh vll.ste ich ja jetzt auch auf der Leitung. Kann mir vll. jemand auf die Sprünge helfen?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230662</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 18 Feb 2007 15:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 15:43:05 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Was macht den genau:</p>
<pre><code class="language-cpp">Tier &amp;B=A;
</code></pre>
<p>?????<br />
Das würde ja heißen: &quot;B ist eine Referenz auf eine Tier Objekt&quot; Ja? Aber A ist doch ein Hund Objekt! Also äh hat das was mit Polymorphie zu tun? Ist &quot;Tier &amp;B=A&quot; sowas wie &quot;Tier *B= new Hund&quot;? Sowas kenn ich nämlich schon. Aber sowas wie &quot;Tier &amp;B=A;&quot; hab ich noch nie gesehen (peinlich?). Also in meinem ganzen C++ Buch kam sowas noch nicht vor. Mhh vll.ste ich ja jetzt auch auf der Leitung. Kann mir vll. jemand auf die Sprünge helfen?<br />
Dankeschön schon mal im Voraus.</p>
</blockquote>
<p>Doch haste bestimmt schonmal gesehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">void func(const Tier&amp; obj);
void othfunc(Tier&amp; obj);
//...
Hund lessie, jimmy;
func(lessie);
othfunc(jimmy);
</code></pre>
<p>Referenzparameter !</p>
<p>Ist nicht das selbe wie Tier *B= new Hund sondern (fast):</p>
<pre><code class="language-cpp">Hund lessie;
Tier *obj = &amp;lessie;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1230670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230670</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Feb 2007 15:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 15:44:50 GMT]]></title><description><![CDATA[<p>Ja, das hast Du schon selbst vollkommen richtig erkannt <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>
<p>Was die Kombination von Zeiger und Referenz angeht, die ist dabei vollkommen beliebig</p>
<pre><code class="language-cpp">Hund h1; // Hund auf Stack
Hund* h2 = new Hund(); // Hund auf Heap

Tier&amp; a = h1; // a ist Referenz auf das Tier im Hund h1
Tier* b = h2; // b ist Zeiger auf das Tier im Hund *h2

// Mischen possible:
Tier* d = &amp;h1; // d ist Zeiger auf das Tier im Hund h1
Tier&amp; c = *h2; // c ist Referenz auf das Tier im Hund *h2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1230673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230673</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 18 Feb 2007 15:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 17:13:01 GMT]]></title><description><![CDATA[<p>Okay kapiert!!! Nicht schwer eigentlich <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 />
So ich hätte da noch eine Frage zu dem Link. Siehe folgendes Beispiel (rauskopiert):</p>
<pre><code class="language-cpp">class A {
    public:
        virtual void func();    // #1
        void gunc();            // #2
    };

    class B : public A {
    public:
        using A::func;
        virtual void func(int); // #3
        virtual void gunc();    // #4
    };

    class C : public B {
    public:
        void func();            // #5
        void gunc(int);         // #6
        void gunc();            // #7
    };

    int main()
    {
        C c;
        A&amp; rac = c;
        B&amp; rbc = c;
        rac.func();
        rac.func(2);
        rac.gunc();
        rac.gunc(2);

        rbc.func();
        rbc.func(2);
        rbc.gunc();
        rbc.gunc(2);

        c.func();
        c.B::func(2);
        c.gunc();
        c.gunc(2);

        B b;
        A&amp; rab = b;
        rab.func();
        rab.func(2);
        rab.gunc();
        rab.gunc(2);

        b.func();
        b.func(2);
        b.gunc();
        b.gunc(2);
    }
</code></pre>
<p>In Zeile 9 steht was mit &quot;using A::func;&quot;! (also das kam echt nicht in meinem Buch vor, using)<br />
Mh ich glaube zwar zu wissen was es bedeutet. Heißt das in etwa sowas wie &quot;schreibe hier in Klasse B nochmal die gleiche Methode hin wie aus Klass A&quot; das da der Code so übernommen wird? Sowas wie ein Makro der Compiler schreibt einfach den Code hin bzw. übernimmt dann die selbe Methode von Klasse A mit Deklaration + Definition für B??? Nääää oder?<br />
Kann mir das jemand erklären? Wäre sichere, als das ich mir das irgendwas zusammenreime <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="🙂"
    /> Dankeschön schon mal im Voraus.</p>
<p>PS: Ich bin schon lernfähig, nicht das sich jemand denkt der frägt bei jedem &quot;sch***dreck&quot; gleich im Forum. Aber ich bin mir halt echt nicht so ganz sicher was das heißt. In diesem Sinne, hoffentlich fühlt sich keiner gestört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1230713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230713</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 18 Feb 2007 17:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 17:53:08 GMT]]></title><description><![CDATA[<p>also damit wird die Methode der Basisklasse auch in der abgeleiteten &quot;sichtbar&quot;.<br />
hier nochmal das Bsp. von vorhin das mithilfe der using-direktive klappen sollte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void Speak(int a) {cout &lt;&lt; &quot;TIER &quot; &lt;&lt; a &lt;&lt; &quot;\n&quot;;}
};

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    int Speak() {cout &lt;&lt; &quot;HUND\n&quot;;
                 return 120;
                }
};

int main()
{
    Tier BigAnimal;
    Hund Bob;
    BigAnimal.Speak(5);
    Bob.Speak(10);
};
</code></pre>
<p>wenn du jetzt Bob.Speak(10) aufrufst, dann gab es zuvor eine Fehlermeldung weil keine Funktion bekannt war die int als Parameter hat <strong>UND</strong> gleichzeitig eine Memberfunktion von Hund ist. Jetzt kann die Methode Speak() der Basisklasse aber auch bei Hund verwendet werden.<br />
<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/1230737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230737</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Sun, 18 Feb 2007 17:53:08 GMT</pubDate></item><item><title><![CDATA[Reply to Redefinieren: Satz aus meinem Buch verstehe ich nicht. on Sun, 18 Feb 2007 17:55:15 GMT]]></title><description><![CDATA[<p>mist! das beispiel hab ich rauskopiert und vergessen das neue in die zwischenablage zu kopieren ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
hier das richtige...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Tier
{
    public:
    Tier() {};
    ~Tier() {};
    void Speak(int a) {cout &lt;&lt; &quot;TIER &quot; &lt;&lt; a &lt;&lt; &quot;\n&quot;;}
};

class Hund : public Tier
{
    public:
    Hund() {};
    ~Hund() {};
    using Tier::Speak;
    int Speak() {cout &lt;&lt; &quot;HUND\n&quot;;
                 return 120;
                }
};

int main()
{
    Tier BigAnimal;
    Hund Bob;
    BigAnimal.Speak(5);
    Bob.Speak(10);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1230741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1230741</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Sun, 18 Feb 2007 17:55:15 GMT</pubDate></item></channel></rss>