<?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[Slicingproblem]]></title><description><![CDATA[<p>Mich würde mal das technische interessieren, ich habe 2 Klassen</p>
<pre><code class="language-cpp">class Base
{
public:
    // Get und Set für 'x'
private:
   int x;
};

class Derived : public Base
{
public:
   // Get und Set für 'y'
private:
   int y;
};

void funktion(Base&amp; obj) {
    // Base kann nicht auf derived-felder zu greifen
}
</code></pre>
<p>Bei 'funktion' wird das das Baseobjekt abgeschnitten, für immer?<br />
Also was passiert da genau? Verliert man da die Speicheradressen? Oder sind sie einfach nicht zugänglich?</p>
<p>Wenn die 'funktion' jetzt aufgerufen wurde und ihre Aufgabe erledigt hat, habe ich dann den Wert von 'y' verloren und kann nie wieder auf das 'y' zu greifen?</p>
<p>diese unwissenheit quält mich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269034/slicingproblem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 11:05:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269034.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jun 2010 19:25:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 19:25:44 GMT]]></title><description><![CDATA[<p>Mich würde mal das technische interessieren, ich habe 2 Klassen</p>
<pre><code class="language-cpp">class Base
{
public:
    // Get und Set für 'x'
private:
   int x;
};

class Derived : public Base
{
public:
   // Get und Set für 'y'
private:
   int y;
};

void funktion(Base&amp; obj) {
    // Base kann nicht auf derived-felder zu greifen
}
</code></pre>
<p>Bei 'funktion' wird das das Baseobjekt abgeschnitten, für immer?<br />
Also was passiert da genau? Verliert man da die Speicheradressen? Oder sind sie einfach nicht zugänglich?</p>
<p>Wenn die 'funktion' jetzt aufgerufen wurde und ihre Aufgabe erledigt hat, habe ich dann den Wert von 'y' verloren und kann nie wieder auf das 'y' zu greifen?</p>
<p>diese unwissenheit quält mich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914091</guid><dc:creator><![CDATA[JustAsking]]></dc:creator><pubDate>Thu, 17 Jun 2010 19:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 19:32:27 GMT]]></title><description><![CDATA[<p>Da wird gar nichts abgeschnitten. Das ist lediglich eine Übergabe per Referenz. Die Funktion kann nicht wissen, ob es noch mehr hinter Base gibt, aber es ist und bleibt da bis du wieder weisst, ob es was gibt (z.B über einen Cast).</p>
<p>Abgeschnitten wird lediglich, wenn du das jetzt per Kopie übergibst, weil dann wird das Objekt kopiert und natürlich lediglich der Teil, welcher auch sicher ankommt. Es ändert aber nichts am ursprünglichen Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914094</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 17 Jun 2010 19:32:27 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 19:34:41 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Da wird gar nichts abgeschnitten. Das ist lediglich eine Übergabe per Referenz. Die Funktion kann nicht wissen, ob es noch mehr hinter Base gibt, aber es ist und bleibt da bis du wieder weisst, ob es was gibt (z.B über einen Cast).</p>
</blockquote>
<p>Also wenn es wieder zum 'Derived' kommt habe ich mein geliebtes 'y' wieder und darf darauf zu greifen so oft ich will.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914097</guid><dc:creator><![CDATA[JustAsking]]></dc:creator><pubDate>Thu, 17 Jun 2010 19:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 19:45:06 GMT]]></title><description><![CDATA[<p>Hallo JustAsking,</p>
<blockquote>
<p>Bei 'funktion' wird das das Baseobjekt abgeschnitten, für immer?<br />
Also was passiert da genau?Verliert man da die Speicheradressen?</p>
</blockquote>
<p>Der Compiler garantiert erstmal das die Objekte,<br />
die 'funktion' erhält min. vom Typ base sind, sie können auch mehr enthalten.</p>
<p>Tatsächlich wird hier im speziellen mit Referenzen gearbeitet<br />
und schon alleine deshalb nichts 'weggelassen'.</p>
<p>Interessant wird es eigentlich erst wenn es keine Referenz wäre,<br />
das Objekt also kopiert werden muss.<br />
Das Objekt wird vollständig kopiert.<br />
Ich bin mir aber nicht sicher ob es nicht auch Fälle gibt wo das nicht so ist.</p>
<blockquote>
<p>Oder sind sie einfach nicht zugänglich?</p>
</blockquote>
<p>Wenn du 'funktion' ein 'Derived' Objekt erhalten würde kann 'funktion' erstmal<br />
nur auf das Base Interface zugreifen, alles ander verhindert der Compiler.<br />
Es ist aber auch möglich mit dynamic_cast 'hochzucasten',<br />
dann kann man ggf. auch auf derivered zuzugreifen.<br />
Andere casts sind an diesen Stellen nicht zu empfehlen ...</p>
<p>Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914106</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 17 Jun 2010 19:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 19:45:37 GMT]]></title><description><![CDATA[<p>Genau. Die Frage ist eher, ob es eine gute Idee ist ob es nötig ist wieder dazu zu kommen. <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/1914107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914107</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 17 Jun 2010 19:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 20:01:19 GMT]]></title><description><![CDATA[<p>Hallo Drakon,</p>
<p>&quot;Das Objekt wird vollständig kopiert.<br />
Ich bin mir aber nicht sicher ob es nicht auch Fälle gibt wo das nicht so ist.&quot;</p>
<p>Bist du sicher, daß das bei einer Kopie nur das BASE Objekt kopiert würde?<br />
Ich würde das gerne wissen und bin mir unsicher.</p>
<p>Danke Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914119</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 17 Jun 2010 20:01:19 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 20:28:38 GMT]]></title><description><![CDATA[<p>Naja. Es gibt sicher Fälle, wo deine Aussage zutrifft, z.B wenn das Basisobjekt gar keine Daten enthält.<br />
Ansonsten macht es überhaupt keinen Sinn, dass noch etwas mehr kopiert wird (wohin denn auch?!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914138</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 17 Jun 2010 20:28:38 GMT</pubDate></item><item><title><![CDATA[Reply to Slicingproblem on Thu, 17 Jun 2010 20:44:14 GMT]]></title><description><![CDATA[<p>Danke Drakon,</p>
<blockquote>
<p>wohin denn auch?!</p>
</blockquote>
<p>Ist die richtige Frage,</p>
<p>Es darf nicht mehr auf den Stack kopiert werden.<br />
hätte ich selbst drauf kommen können ...</p>
<p>Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1914148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1914148</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 17 Jun 2010 20:44:14 GMT</pubDate></item></channel></rss>