<?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[Subtyping]]></title><description><![CDATA[<p>Kenne Subtyping-Polymorphie aus Java.....Jetzt die Frage : In welchem Kontext spricht man in C++ von Subtyping ?<br />
Subtyping kann doch eigentlich nur auf Zeigern/Referenzen(also Adresstypen) richtig funktionieren , oder ? Auf den Objekten selber würde eine Zuweisung der Form<br />
Ober = Unter(bereits exitierender Objekte) ja z.B irgend einen Objektteil des Subobjekts unterschlagen...jetzt hat man doch die Möglichkeit Zuweisungsoperatoren so selbst zu definieren , dass Zuweisungen dieser Art auch für die Objekte selbst (nicht auf deren Zeigern) wie gewünscht funktionieren ....hab ich aus Breymann 9.Auflage Kapitel &quot;Zuweisungsoperator und Vererbung&quot;......Hatt das jetzt überhaupt irgendwas mit Subtyping zu tun , oder spricht man in diesem Kontext nicht von Subtyping , bzw. für was und wann braucht man sowas und wann kann eine Zuweisung von Ober = Unter für die Objekte selbst jemals sinnvoll funktionieren(wegen den normalerweise fehlenden Attributen der abstarkteren Klasse usw...)? Hier noch ein Link zu einer Leseprobe des Buchs : <a href="http://www.edv-buchversand.de/productinfo.php?cnt=productinfo&amp;id=ha-41023&amp;type=2&amp;lng=0" rel="nofollow">http://www.edv-buchversand.de/productinfo.php?cnt=productinfo&amp;id=ha-41023&amp;type=2&amp;lng=0</a><br />
Die Pdf unter Leseprobe runterladen und nach &quot;Zuweisungsoperator und Vererbung&quot; suchen......wen es interessiert ... (Das Kapitel ist nur etwa 4 Seiten lang)....In einem anderen Thread wurde außerdem bereits ein Fehler im Kapitel gefunden und jetzt weiß ich gar nicht mehr was ich überhaupt damit anfangen soll......Jedenfalls schon mal danke für die Hilfe im Vorraus.....</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246174/subtyping</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 07:43:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246174.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Jul 2009 05:20:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Subtyping on Fri, 24 Jul 2009 05:28:51 GMT]]></title><description><![CDATA[<p>Kenne Subtyping-Polymorphie aus Java.....Jetzt die Frage : In welchem Kontext spricht man in C++ von Subtyping ?<br />
Subtyping kann doch eigentlich nur auf Zeigern/Referenzen(also Adresstypen) richtig funktionieren , oder ? Auf den Objekten selber würde eine Zuweisung der Form<br />
Ober = Unter(bereits exitierender Objekte) ja z.B irgend einen Objektteil des Subobjekts unterschlagen...jetzt hat man doch die Möglichkeit Zuweisungsoperatoren so selbst zu definieren , dass Zuweisungen dieser Art auch für die Objekte selbst (nicht auf deren Zeigern) wie gewünscht funktionieren ....hab ich aus Breymann 9.Auflage Kapitel &quot;Zuweisungsoperator und Vererbung&quot;......Hatt das jetzt überhaupt irgendwas mit Subtyping zu tun , oder spricht man in diesem Kontext nicht von Subtyping , bzw. für was und wann braucht man sowas und wann kann eine Zuweisung von Ober = Unter für die Objekte selbst jemals sinnvoll funktionieren(wegen den normalerweise fehlenden Attributen der abstarkteren Klasse usw...)? Hier noch ein Link zu einer Leseprobe des Buchs : <a href="http://www.edv-buchversand.de/productinfo.php?cnt=productinfo&amp;id=ha-41023&amp;type=2&amp;lng=0" rel="nofollow">http://www.edv-buchversand.de/productinfo.php?cnt=productinfo&amp;id=ha-41023&amp;type=2&amp;lng=0</a><br />
Die Pdf unter Leseprobe runterladen und nach &quot;Zuweisungsoperator und Vererbung&quot; suchen......wen es interessiert ... (Das Kapitel ist nur etwa 4 Seiten lang)....In einem anderen Thread wurde außerdem bereits ein Fehler im Kapitel gefunden und jetzt weiß ich gar nicht mehr was ich überhaupt damit anfangen soll......Jedenfalls schon mal danke für die Hilfe im Vorraus.....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748611</guid><dc:creator><![CDATA[Toman]]></dc:creator><pubDate>Fri, 24 Jul 2009 05:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Subtyping on Fri, 24 Jul 2009 07:25:33 GMT]]></title><description><![CDATA[<p>Toman schrieb:</p>
<blockquote>
<p>Kenne Subtyping-Polymorphie aus Java.....Jetzt die Frage : In welchem Kontext spricht man in C++ von Subtyping ?</p>
</blockquote>
<p>In C++ kannte ich Subtypes bisher nur als Bezeichnung für Memberklassen (also innere Klassen). Vererbung heißt einfach Vererbung/Inheritance.</p>
<blockquote>
<p>Subtyping kann doch eigentlich nur auf Zeigern/Referenzen(also Adresstypen) richtig funktionieren , oder ?</p>
</blockquote>
<p>Richtig. Ist in Java ja auch so - Java-Variablen sind schließlich grundsätzlich Referenzen.</p>
<blockquote>
<p>Auf den Objekten selber würde eine Zuweisung der Form<br />
Ober = Unter(bereits exitierender Objekte) ja z.B irgend einen Objektteil des Subobjekts unterschlagen...</p>
</blockquote>
<p>Jup, das nennt sich Slicing. Der Kindklassen-Teil des Objektes wird nicht mit kopiert.</p>
<blockquote>
<p>jetzt hat man doch die Möglichkeit Zuweisungsoperatoren so selbst zu definieren , dass Zuweisungen dieser Art auch für die Objekte selbst (nicht auf deren Zeigern) wie gewünscht funktionieren</p>
</blockquote>
<p>Nein, nicht wirklich. Du kannst einem Base kein Derived zuweisen, so dass es zu einem Derived wird. Der Typ bleibt, und es wird immer nur der Base-Teil kopiert. Für den Derived-Teil existieren ja einfach keine Variablen.</p>
<blockquote>
<p>wann kann eine Zuweisung von Ober = Unter für die Objekte selbst jemals sinnvoll funktionieren(wegen den normalerweise fehlenden Attributen der abstarkteren Klasse usw...)?</p>
</blockquote>
<p>Es gibt einzelne Anwendungsbereiche wo man tatsächlich nur den Base-Teil kopieren will, d.h. wo man das Slicing möchte.. Statt explizit nur den Base-Teil des Derived-Objekts zu kopieren übergibt man das komplette Derived-Objekt. Beispiele sind Copy-Konstruktoren und op= der abgeleiteten Klasse:</p>
<pre><code class="language-cpp">class Base;

class Derived : public Base
{
  static int counter = 0;
  int ID;
public:
  Derived(Derived const&amp; rhs)  //Copy-Ctor
  : Base(rhs) //nur Base-Teil von rhs kopieren!
  , ID(++counter)
  {}

  Derived&amp; operator=(Derived const&amp; rhs)
  {
    Base::operator=(rhs); //nur Base-Teil von rhs kopieren!
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1748636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748636</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 24 Jul 2009 07:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to Subtyping on Fri, 24 Jul 2009 07:07:44 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>Auf den Objekten selber würde eine Zuweisung der Form<br />
Ober = Unter(bereits exitierender Objekte) ja z.B irgend einen Objektteil des Subobjekts unterschlagen...</p>
</blockquote>
<p>Jup, das nennt sich Splicing. Der Kindklassen-Teil des Objektes wird nicht mit kopiert.</p>
</blockquote>
<p>Ehm.. war das nicht Slicing?<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748649</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 24 Jul 2009 07:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Subtyping on Fri, 24 Jul 2009 07:25:38 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<blockquote>
<blockquote>
<p>Auf den Objekten selber würde eine Zuweisung der Form<br />
Ober = Unter(bereits exitierender Objekte) ja z.B irgend einen Objektteil des Subobjekts unterschlagen...</p>
</blockquote>
<p>Jup, das nennt sich Splicing. Der Kindklassen-Teil des Objektes wird nicht mit kopiert.</p>
</blockquote>
<p>Ehm.. war das nicht Slicing?<br />
Simon</p>
</blockquote>
<p>Jup sorry. Ist noch früh...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748655</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 24 Jul 2009 07:25:38 GMT</pubDate></item></channel></rss>