<?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[Slicing-Problem]]></title><description><![CDATA[<p>ich habe in mal gelesen über &quot;Übergabe via Wert vs. Übergabe via Referenz&quot;</p>
<blockquote>
<p>Zusätzlich wird das sogenannte Slicing-Problem unterbunden: es bezeichnet den Umstand, dass bei einer Konvertierung in eine Basisklasse alle diejenigen Eigenschaften verloren gehen, die die abgeleitete Klasse ausgezeichnet haben. Bei der Referenzübergabe jedoch bleibt der originale Datentyp erhalten, selbst wenn in der Parameter-Liste nur eine Basisklasse verlangt wird. Bei einer Wertübergabe wäre dies nicht der Fall gewesen.</p>
</blockquote>
<p>das verstehe ich nicht ganz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136784/slicing-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 14:01:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136784.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Feb 2006 09:58:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Slicing-Problem on Mon, 13 Feb 2006 09:58:29 GMT]]></title><description><![CDATA[<p>ich habe in mal gelesen über &quot;Übergabe via Wert vs. Übergabe via Referenz&quot;</p>
<blockquote>
<p>Zusätzlich wird das sogenannte Slicing-Problem unterbunden: es bezeichnet den Umstand, dass bei einer Konvertierung in eine Basisklasse alle diejenigen Eigenschaften verloren gehen, die die abgeleitete Klasse ausgezeichnet haben. Bei der Referenzübergabe jedoch bleibt der originale Datentyp erhalten, selbst wenn in der Parameter-Liste nur eine Basisklasse verlangt wird. Bei einer Wertübergabe wäre dies nicht der Fall gewesen.</p>
</blockquote>
<p>das verstehe ich nicht ganz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992873</guid><dc:creator><![CDATA[netrobot]]></dc:creator><pubDate>Mon, 13 Feb 2006 09:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Slicing-Problem on Mon, 13 Feb 2006 10:09:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A
{
public:
  A() : aval(0) {}
  int aval;
  virtual void print()
  { cout&lt;&lt;&quot;A:&quot;&lt;&lt;aval&lt;&lt;endl;
};

class B : public A
{
public:
  B() : A(), bval(1) {}
  int bval;
  void print()
  {
    cout&lt;&lt;&quot;B:&quot;&lt;&lt;bval&lt;&lt;endl;
    A::print();
  }
};

void vfunc(A value)
{ value.print(); }
void rfunc(A&amp; value)
{ value.print(); }

int main()
{
  B theB;
  vfunc(theB);
  rfunc(theB);
}
</code></pre>
<p>bei der Übergabe als Wert wird 'theB' in ein A-Objekt kopiert, B-spezifische Elemente (bval) gehen dabei verloren, genauso würden bei virtuellen Funktionen die Versionen aus A aufgerufen werden.<br />
bei der Übergabe als Referenz wird theB lediglich als A-Objekt interpretiert (und kann bei Bedarf auch wieder in ein B-Objekt gecastet werden), bval und virtuelle Funktionen bleiben dabei erhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992880</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Mon, 13 Feb 2006 10:09:09 GMT</pubDate></item></channel></rss>