<?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[verständnisfrage zu Referenz auf Pointer]]></title><description><![CDATA[<pre><code class="language-cpp">void fooA(Base*&amp; arg)       { ... } 
void fooB(Base* const&amp; arg) { ... } 
...
//Derived ist Spezialisierung von Base!
Derived* derivedPtr = new Derived;

fooA(derivedPtr); //error
fooB(derivedPtr); //funzt
</code></pre>
<p>Frage:<br />
Wieso? Liegt es daran, dass Derived* eben nicht vom Typ Base* ist?</p>
<p>Ist das ähnlich wie bei:</p>
<pre><code class="language-cpp">void fooA(int&amp; a)        { ... } 
void fooB(int const &amp; a) { ... } 
...
fooA(1); //error, da 1 nicht &quot;änderbar&quot; ist
fooB(1); //funzt
</code></pre>
<p>Zerbrechen uns hier grad den Kopf darüber <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="😉"
    /> Bitte helft 5 Ingenieuren...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215567/verständnisfrage-zu-referenz-auf-pointer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 06:54:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215567.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jun 2008 14:49:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 14:49:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void fooA(Base*&amp; arg)       { ... } 
void fooB(Base* const&amp; arg) { ... } 
...
//Derived ist Spezialisierung von Base!
Derived* derivedPtr = new Derived;

fooA(derivedPtr); //error
fooB(derivedPtr); //funzt
</code></pre>
<p>Frage:<br />
Wieso? Liegt es daran, dass Derived* eben nicht vom Typ Base* ist?</p>
<p>Ist das ähnlich wie bei:</p>
<pre><code class="language-cpp">void fooA(int&amp; a)        { ... } 
void fooB(int const &amp; a) { ... } 
...
fooA(1); //error, da 1 nicht &quot;änderbar&quot; ist
fooB(1); //funzt
</code></pre>
<p>Zerbrechen uns hier grad den Kopf darüber <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="😉"
    /> Bitte helft 5 Ingenieuren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527834</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 12 Jun 2008 14:49:14 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:04:11 GMT]]></title><description><![CDATA[<p>Ein X aus Derived hat nichts mit X aus Base zu tun (substituiere X mit &quot;Zeiger auf&quot;, &quot;Templateklasse mit Argument&quot; etc.). Zwar kann einem Zeiger<em>wert</em> (also einer Adresse) auf ein Derived-Objekt der Zeiger<em>wert</em> auf das in Derived befindliche Base-Subobjekt zugeordnet werden. Das sagt aber nichts über die Zeiger<em>objekte</em> des jeweiligen Typs aus.</p>
<pre><code class="language-cpp">struct Base { ... };
struct Derived1 : Base { ... };
struct Derived2 : Base { ... };
void foo(Base*&amp; arg) { arg = new Derived2(...); }

Derived1* derivedPtr;
foo(derivedPtr); // nehmen wir an, das wäre möglich
// ups, derivedPtr zeigt plötzlich auf ein Derived2 (eigentlich: das Base-Objekt davon, denn bei der Zuweisung in foo hat eine Konvertierung in Base* stattgefunden)
</code></pre>
<p>fooB kann dagegen aufgerufen werden, hier wird ein temporäres Objekt des Typs Base* erzeugt (mit dem Zeigerwert, der durch die Konvertierung Derived-&gt;Base entsteht) und an die Referenz gebunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527850</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:04:11 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:05:44 GMT]]></title><description><![CDATA[<p>Okay. Ich glaub ich hab die Erklärung.</p>
<p>Folgendes ist erlaubt (wenn auch nicht wirklich schön)</p>
<pre><code class="language-cpp">void fooA(Base*&amp; arg)       
{ 
   arg = new Base; 
}
</code></pre>
<p>Somit würde fooA den Zeiger, der eigentlich ein DerivedPtr war in einen BasePtr ändern udn das darf nicht sein.</p>
<p>ups.. gleichzeitig mit camper geantwortet.</p>
<p>danke, wie immer!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527851</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:05:44 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:03:50 GMT]]></title><description><![CDATA[<p>wenn du dort Polymorphismus betreiben willst, solltest du es mal so versuchen</p>
<pre><code class="language-cpp">void fooA(Base* arg)       { ... }
...
//Derived ist Spezialisierung von Base!
Derived derivedPtr;

fooA(derivedPtr);
</code></pre>
<p>das SOLLTE laufen,bin mir aber nicht 100% sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527852</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:08:17 GMT]]></title><description><![CDATA[<p>klar, das letzteres funntkioniert. die frage trat auf, weil ein Kollege einen boost::shared_ptr auf eine abgeleitete Klasse per Referenz and eine Methode übergeben wollte, die ausschließlich Referenzen auf shared_ptr der basisklasse verwenden.<br />
Grund war hier, dass er sich den Overhead der Referenzzählung ersparen wollte, wie es bei einem call per value der Fall gewesen wäre</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527858</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:11:08 GMT]]></title><description><![CDATA[<p>Wenn das funktionieren würde, könnte die Variable <strong>derivedPtr</strong> nach dem Aufruf plötzlich auf eine ganz andere Spezialisierung zeigen.</p>
<pre><code class="language-cpp">void fooA(Base*&amp; arg) { arg = new Derived4711; } 
//...
Derived* derivedPtr = new Derived;
fooA(derivedPtr);
//jetzt wäre derivedPtr urplötzlich ein Zeiger auf Derived4711
//...
</code></pre>
<p>//EDIT: Mist, viel zu spät</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527859</guid><dc:creator><![CDATA[Kreppel]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:10:44 GMT]]></title><description><![CDATA[<p>Kreppel schrieb:</p>
<blockquote>
<p>Wenn das funktionieren würde, könnte die Variable <strong>derivedPtr</strong> nach dem Aufruf plötzlich auf eine ganz andere Spezialisierung zeigen.</p>
<pre><code class="language-cpp">void fooA(Base*&amp; arg) { arg = new Derived4711; } 
//...
Derived* derivedPtr = new Derived;
fooA(derivedPtr);
//jetzt wäre derivedPtr urplötzlich ein Zeiger auf Derived4711
//...
</code></pre>
</blockquote>
<p>jupp... hab ich ja vor zwei posts geschrieben <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/1527862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527862</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:10:44 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:14:15 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>jupp... hab ich ja vor zwei posts geschrieben <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>
</blockquote>
<p>Ja, das nächste Mal werde ich auf Refresh oder auf Vorschau drücken, wenn ich beim Schreiben so lange Pause mache... <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527866</guid><dc:creator><![CDATA[Kreppel]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to verständnisfrage zu Referenz auf Pointer on Thu, 12 Jun 2008 15:19:06 GMT]]></title><description><![CDATA[<p>Kreppel schrieb:</p>
<blockquote>
<p>muffmolch schrieb:</p>
<blockquote>
<p>jupp... hab ich ja vor zwei posts geschrieben <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>
</blockquote>
<p>Ja, das nächste Mal werde ich auf Refresh oder auf Vorschau drücken, wenn ich beim Schreiben so lange Pause mache... <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="🙄"
    /></p>
</blockquote>
<p>das problem kenne ich... kein problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527870</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 12 Jun 2008 15:19:06 GMT</pubDate></item></channel></rss>