<?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[pointer nach referenz casten]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>wenn man einen Pointer auf ein Objekt hat, aber die Referenz<br />
auf das Objekt braucht, kann man dann einfach den Pointer als<br />
Referenz casten (d.h. die Referenz ist dann einfach die Adresse<br />
die im Pointer steht)? Wie z.B. hier:</p>
<pre><code class="language-cpp">void A(obj &amp;o)
{
 ...
}

void B(obj *o)
{
  A((obj&amp;)o);
}
</code></pre>
<p>Oder muss man immer dereferenzieren?</p>
<pre><code class="language-cpp">void A(obj &amp;o)
{
 ...
}

void B(obj *o)
{
  A(*o);
}
</code></pre>
<p>Wenn beides geht, ist die erste Version<br />
mit dem Casten schneller, weil dort das<br />
dereferenzieren wegfällt?</p>
<p>Danke!<br />
Gruß gast_45</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190438/pointer-nach-referenz-casten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 14:59:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190438.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Aug 2007 17:28:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 17:28:16 GMT]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>wenn man einen Pointer auf ein Objekt hat, aber die Referenz<br />
auf das Objekt braucht, kann man dann einfach den Pointer als<br />
Referenz casten (d.h. die Referenz ist dann einfach die Adresse<br />
die im Pointer steht)? Wie z.B. hier:</p>
<pre><code class="language-cpp">void A(obj &amp;o)
{
 ...
}

void B(obj *o)
{
  A((obj&amp;)o);
}
</code></pre>
<p>Oder muss man immer dereferenzieren?</p>
<pre><code class="language-cpp">void A(obj &amp;o)
{
 ...
}

void B(obj *o)
{
  A(*o);
}
</code></pre>
<p>Wenn beides geht, ist die erste Version<br />
mit dem Casten schneller, weil dort das<br />
dereferenzieren wegfällt?</p>
<p>Danke!<br />
Gruß gast_45</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349931</guid><dc:creator><![CDATA[gast_45]]></dc:creator><pubDate>Wed, 22 Aug 2007 17:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 17:42:48 GMT]]></title><description><![CDATA[<p>Die zweite Variante ist richtig. Die Referenz ist so zu behandeln als wenn Du das Originalobjekt in der Hand hättest. (Im Hintergrund ist es das Originalobjekt.)</p>
<p>Ob das erste Beispiel funktionieren <strong>könnte</strong> weiß ich nicht. Wenn doch dann hast Du auf jeden Fall die Dereferenzierung vergessen.</p>
<pre><code class="language-cpp">void B(obj *o) {
  A((obj&amp;)*o);
}
</code></pre>
<p>Also auf jeden Fall dereferenzieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349939</guid><dc:creator><![CDATA[martin_salo]]></dc:creator><pubDate>Wed, 22 Aug 2007 17:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 17:44:35 GMT]]></title><description><![CDATA[<p>Die erste Version ist semantisch falsch: Du versuchst einen Zeiger auf ein Objekt als einen Wert dieses Objektes aufzufassen und eine Referenz darauf zu bekommen. Das müsste hier zwar abhängig vom Typ manchmal gehen (mit reinterpret_cast bzw. einem C-Style-Cast), aber ist nicht das was du willst. Es bleibt dir nichts anderes übrig als zu dereferenzieren. Glücklicherweise ist das Dereferenzieren eines Zeigers eine Operation, die auf Maschinenebene keine Entsprechung hat, es kostet also nichts.<br />
Erst der spätere Zugriff auf den Wert kostet etwas, aber auch da macht es keinen Unterschied, ob du über die Referenz oder über den Zeiger gehst. Wenn es nicht unterschiedliche Rahmenbedingungen für die Optimierung gäbe, könnte man erwarten, dass Referenzen und Zeiger sich in identischem Maschinencode niederschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349941</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 22 Aug 2007 17:44:35 GMT</pubDate></item><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 18:23:11 GMT]]></title><description><![CDATA[<p>danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349965</guid><dc:creator><![CDATA[gast_45]]></dc:creator><pubDate>Wed, 22 Aug 2007 18:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 18:25:45 GMT]]></title><description><![CDATA[<p>ich dachte halt das eine referenz auf ein objekt<br />
im prinzip nichts anderes ist als ein pointer<br />
auf ein objekt (beide tragen die adresse des objekts).<br />
und das ich deswegen vielleicht auch einfach den<br />
pointer als referenz casten könnte. na ja offensichtlich<br />
ist eine referenz doch nicht einfach nur eine speicheradresse<br />
wie sie in einem pointer liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349969</guid><dc:creator><![CDATA[gast_45]]></dc:creator><pubDate>Wed, 22 Aug 2007 18:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to pointer nach referenz casten on Wed, 22 Aug 2007 18:28:39 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Technisch gesehen sind Referenzen und Pointer dasselbe, es kommt der gleiche Maschinencode raus. Beide bestehen selber nur aus einer Speicheradresse. Aber syntaktisch und semantisch unterscheiden sie sich.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1349972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1349972</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 22 Aug 2007 18:28:39 GMT</pubDate></item></channel></rss>