<?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[Überschreiben von funktionen...]]></title><description><![CDATA[<p>Folgende Situation legen wir mal fest:</p>
<pre><code class="language-cpp">class PapiKlasse{
     public:
          virtual void einePapiFunktion();
          virtual void zweitePapiFunktion();
};
void PapiKlasse::einePapiFunktion(){
     zweitePapiFunktion();
}
void PapiKlasse::zweitePapiFunktion(){
     std::cout &lt;&lt; &quot;Papi&quot; &lt;&lt; endl;
}

class TochterKlasse :PapiKlasse{
     public:
          virtual void zweitePapiFunktion();
};
void TochterKlasse::zweitePapiFunktion(){
     std::cout &lt;&lt; &quot;Tochter&quot; &lt;&lt; endl;
}
</code></pre>
<p>wenn ein TochterKlasse-Objekt nun die operation einePapiFuntkion() ausführen soll, wird dann &quot;Papi&quot; oder &quot;Tochter&quot; ausgegeben?</p>
<p>sollte doch Tochter ausgegeben werden oder?</p>
<p>wenn ja dann frage ich mich:</p>
<p>Warum würde Tochter ausgegeben wenn die TochterKlasse irgendwo in der PapiKlasse mal als Parameter als PapiKlasse durchgegeben wird?!<br />
EDIT{<br />
wenn nein dann frage ich mich:</p>
<p>wie kann ich es schaffen dass die funktion aus der TochterKlasse genommen wird????<br />
};</p>
<p>Ich hoffe ihr versteht was ich mein <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>
<p>Danke schommal Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182639/überschreiben-von-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:09:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182639.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 May 2007 15:44:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 16:13:53 GMT]]></title><description><![CDATA[<p>Folgende Situation legen wir mal fest:</p>
<pre><code class="language-cpp">class PapiKlasse{
     public:
          virtual void einePapiFunktion();
          virtual void zweitePapiFunktion();
};
void PapiKlasse::einePapiFunktion(){
     zweitePapiFunktion();
}
void PapiKlasse::zweitePapiFunktion(){
     std::cout &lt;&lt; &quot;Papi&quot; &lt;&lt; endl;
}

class TochterKlasse :PapiKlasse{
     public:
          virtual void zweitePapiFunktion();
};
void TochterKlasse::zweitePapiFunktion(){
     std::cout &lt;&lt; &quot;Tochter&quot; &lt;&lt; endl;
}
</code></pre>
<p>wenn ein TochterKlasse-Objekt nun die operation einePapiFuntkion() ausführen soll, wird dann &quot;Papi&quot; oder &quot;Tochter&quot; ausgegeben?</p>
<p>sollte doch Tochter ausgegeben werden oder?</p>
<p>wenn ja dann frage ich mich:</p>
<p>Warum würde Tochter ausgegeben wenn die TochterKlasse irgendwo in der PapiKlasse mal als Parameter als PapiKlasse durchgegeben wird?!<br />
EDIT{<br />
wenn nein dann frage ich mich:</p>
<p>wie kann ich es schaffen dass die funktion aus der TochterKlasse genommen wird????<br />
};</p>
<p>Ich hoffe ihr versteht was ich mein <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>
<p>Danke schommal Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293167</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Sun, 27 May 2007 16:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 16:44:37 GMT]]></title><description><![CDATA[<p>aHunger schrieb:</p>
<blockquote>
<p>sollte doch Tochter ausgegeben werden oder?</p>
</blockquote>
<p>Richtig!</p>
<p>DaHunger schrieb:</p>
<blockquote>
<p>Warum würde Tochter ausgegeben wenn die TochterKlasse irgendwo in der PapiKlasse mal als Parameter als PapiKlasse durchgegeben wird?!</p>
</blockquote>
<p>Technisch gesehen deshalb, weil die Instanzen von<br />
Objekten einen Zeiger auf eine Funktions/Methoden-Tabelle<br />
besitzen, anhand dessen zur Laufzeit die <em>richtige</em><br />
ausgwählt wird.</p>
<p>Auch dann, wenn die Variable vom Typ der Oberklasse deklariert wurde.</p>
<p>In Java-Syntax:</p>
<pre><code class="language-cpp">PapiKlasse papiOderTochter = new TochterKlasse();
</code></pre>
<p>papiOderTochter ist dann auf jeden Fall eine Instanz<br />
der TochterKlasse und besitzt damit diesen internen Zeiger<br />
auf die Funktionstabelle mit den <em>richtigen</em> Methoden-Adressen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293215</guid><dc:creator><![CDATA[Leroy42]]></dc:creator><pubDate>Sun, 27 May 2007 16:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 17:47:25 GMT]]></title><description><![CDATA[<p>schön ich habs ausprobiert bei mir wird trotzdem papi ausgegeben... wie krigg ichs jetzt hin dass tochter ausgegeben wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293251</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Sun, 27 May 2007 17:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 17:49:19 GMT]]></title><description><![CDATA[<p>Zeig mal deinen <em>vollständigen</em> Code</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293252</guid><dc:creator><![CDATA[Leroy42]]></dc:creator><pubDate>Sun, 27 May 2007 17:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 18:04:01 GMT]]></title><description><![CDATA[<p>schön ich habs mit exakt dem beispiel probiert er gibt tochter aus.</p>
<p>aber mein eigentlicher code gibt vergleichbar damit papi aus....</p>
<pre><code class="language-cpp">class Server{
    public:
        Server();
        static void *stHandleConnection(void *_pclient);
        virtual void handleConnection(int _client);
        void sendText(int _client, char* _text);
        int initWinSock();
    private:
        int serverSocket;
        struct sockaddr_in clientAdress;
        struct sockaddr_in serverAdress;
        int cliSize;
};
</code></pre>
<p>...</p>
<pre><code class="language-cpp">void *Server::stHandleConnection(void *_pclient){
    struct serverClient client;
    client=*(struct serverClient *)_pclient;
    Server sv=*client.server;
    sv.handleConnection(client.client);
}
void Server::handleConnection(int _client){
    cout &lt;&lt; &quot;client connected!&quot; &lt;&lt; endl;
    sendText(_client,&quot;Willkommen&quot;);
    CLOSE(_client);
}
</code></pre>
<p>...</p>
<pre><code class="language-cpp">class TheServer : Server{
    public:
        TheServer();
        virtual void handleConnection(int _client);
};
</code></pre>
<p>...</p>
<pre><code class="language-cpp">void TheServer::handleConnection(int _client){
    cout &lt;&lt; &quot;test&quot; &lt;&lt; endl;
}
</code></pre>
<p>...</p>
<pre><code class="language-cpp">int main(){
	//Client *cl=new Client;
	TheServer *sv=new TheServer;
	return 0;
	//delete cl;
	delete sv;
}
</code></pre>
<p>ok hier is jetzt die sache wobei das tochter-objekt einmal als vater-objekt durch die funktionen geht aber es kam dasselbe auch raus als ich nochmal ne extra funktion gemacht hab... hier das struct noch:</p>
<pre><code class="language-cpp">struct serverClient{
    Server *server;
    int client;
};
</code></pre>
<p>so ich hoff das hilft dir, mit zu helfen XD<br />
also die funktion handleConnection ist die um die es geht...</p>
<p>es wird die von Server ausgeführt nicht die von TheServer obwohl ich das gerne hätte... hast du oder sonst wer ne idee wie ich das schaffen könnte?</p>
<p>danke, Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293263</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Sun, 27 May 2007 18:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 18:18:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Server sv=*client.server;
</code></pre>
<p>Hier legst du eine Kopie an, und zwar eine Kopie des Subobjekts vom Typ Server, auf das *client.server verweist. Dabei gehen natürlich alle Informationen, die TServer darüberhinaus hat, verloren. Dieser Vorgang wird auch als slicing bezeichnet. Eine Kopie zu erstellen at hier allerdings ohnehin keinen Sinn. Eine Referenz tut das richtige:</p>
<pre><code class="language-cpp">Server&amp; sv=*client.server;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1293286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293286</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 27 May 2007 18:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Sun, 27 May 2007 18:27:42 GMT]]></title><description><![CDATA[<p>diese modifikation hat nichts geändert...<br />
es wird immernoch handleConnection von Server ausgeführt anstatt von TheServer...</p>
<p>EDIT{<br />
kann es sein dass hier:</p>
<pre><code class="language-cpp">client.server= this;
</code></pre>
<p>schon eine kopie angelegt wird auf die ich dann später eine referenz erstelle? das wäre fatal....</p>
<p>ich hab mich bisher nie mit referenzen beschäftigt... (JAVA-Umsteiger <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 />
}</p>
<p>gruß, Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293289</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Sun, 27 May 2007 18:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Mon, 28 May 2007 08:58:55 GMT]]></title><description><![CDATA[<p>kann mir keiner helfen???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293515</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Mon, 28 May 2007 08:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben von funktionen... on Mon, 28 May 2007 12:05:40 GMT]]></title><description><![CDATA[<p>Problem gelöst!<br />
ich erzeuge ein objekt der subklasse, dann wird also ZUERST der konstruktor der superklasse ausgeführt und DANN der von der subklasse. im konstruktor der Superklasse allerdings steht eine endlosschleife, und dadurch existiert noch gar kein objekt der subklasse. deshalb wird die funktion der superklasse verwendet!</p>
<p>Gruß, Hunger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293686</guid><dc:creator><![CDATA[DaHunger]]></dc:creator><pubDate>Mon, 28 May 2007 12:05:40 GMT</pubDate></item></channel></rss>