<?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[Zeiger vs. Referenz]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte mal in die Runde fragen, wie ihr allgemein zu Zeigern / Referenzen steht. Was bevorzugt ihr wann und warum? Ich tendiere allgemein zu Referenzen, da sie etwas sicherer und einfacher zu verwenden sind, allerdings kommt man manchmal nicht um Zeiger herum.</p>
<p>Zugunsten der Konsistenz könnte man aber auch nur auf Zeiger setzen und auf Referenzen ganz verzichten, denn Zeiger haben keinerlei Limiterungen.</p>
<p>Einen Mischmasch zwischen beiden finde ich am schlimmsten, man (de-)referenziert zwar recht schnell, allerdings muss man dann ständig auf der Hut sein was gerade verlangt wird - und zur Leserlichkeit trägt es auch nicht gerade bei.</p>
<p>Gibt es da unter C++ Programmierern einen Konsens? Sowas wie &quot;Referenz wenn möglich, Zeiger nur wenn unvermeidbar&quot;?</p>
<p>MfG,<br />
Pointee</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247017/zeiger-vs-referenz</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 19:25:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247017.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Aug 2009 05:14:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 05:14:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte mal in die Runde fragen, wie ihr allgemein zu Zeigern / Referenzen steht. Was bevorzugt ihr wann und warum? Ich tendiere allgemein zu Referenzen, da sie etwas sicherer und einfacher zu verwenden sind, allerdings kommt man manchmal nicht um Zeiger herum.</p>
<p>Zugunsten der Konsistenz könnte man aber auch nur auf Zeiger setzen und auf Referenzen ganz verzichten, denn Zeiger haben keinerlei Limiterungen.</p>
<p>Einen Mischmasch zwischen beiden finde ich am schlimmsten, man (de-)referenziert zwar recht schnell, allerdings muss man dann ständig auf der Hut sein was gerade verlangt wird - und zur Leserlichkeit trägt es auch nicht gerade bei.</p>
<p>Gibt es da unter C++ Programmierern einen Konsens? Sowas wie &quot;Referenz wenn möglich, Zeiger nur wenn unvermeidbar&quot;?</p>
<p>MfG,<br />
Pointee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755461</guid><dc:creator><![CDATA[Pointee]]></dc:creator><pubDate>Wed, 05 Aug 2009 05:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 06:04:43 GMT]]></title><description><![CDATA[<p>Nimm Referenzen immer da, wo die Variable auf jeden Fall gültig sein muss, während Zeiger dort kommen, wo etwas auch tatsächlich null sein darf:</p>
<pre><code class="language-cpp">void Spaziergang(const Spaziergaenger &amp;spaziergaenger, const Hund *hund);
</code></pre>
<p>Der Hund ist optional, daher ein Zeiger, damit wir prüfen können, ob er überhaupt da ist. Der Spaziergänger muss aber immer da sein. Deshalb wird er wie eine ganz normale Variable übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755471</guid><dc:creator><![CDATA[Buggy34242]]></dc:creator><pubDate>Wed, 05 Aug 2009 06:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 06:24:12 GMT]]></title><description><![CDATA[<p>Buggy34242 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void Spaziergang(const Spaziergaenger &amp;spaziergaenger, const Hund *hund);
</code></pre>
<p>Der Hund ist optional, daher ein Zeiger, damit wir prüfen können, ob er überhaupt da ist. Der Spaziergänger muss aber immer da sein. Deshalb wird er wie eine ganz normale Variable übergeben.</p>
</blockquote>
<p>Den optionalen Hund würde ich in dem Fall durch Überladung lösen. Normalerweise sollte man möglichst einheitlich Referenzen <em>oder</em> Zeiger benutzen, um den Anwender oder einen selber beim späteren Lesen des Codes nicht zu verwirren.<br />
Als Funktionsparameter benutze ich daher eher Referenzen, Zeiger bleiben für bestimmte Beziehungen zwischen Klassen und für dynamische Speicherverwaltung vorbehalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755479</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 05 Aug 2009 06:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 09:54:43 GMT]]></title><description><![CDATA[<p>In diesem Forum gibt es zahlreiche Threads, in denen es genau um das geht. Such doch mal kräftig. (Kleiner Tipp: Mit google gehts besser, als mit der Boardsuche..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755577</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 05 Aug 2009 09:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 09:58:00 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Buggy34242 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void Spaziergang(const Spaziergaenger &amp;spaziergaenger, const Hund *hund);
</code></pre>
<p>Der Hund ist optional, daher ein Zeiger, damit wir prüfen können, ob er überhaupt da ist. Der Spaziergänger muss aber immer da sein. Deshalb wird er wie eine ganz normale Variable übergeben.</p>
</blockquote>
<p>Den optionalen Hund würde ich in dem Fall durch Überladung lösen. Normalerweise sollte man möglichst einheitlich Referenzen <em>oder</em> Zeiger benutzen, um den Anwender oder einen selber beim späteren Lesen des Codes nicht zu verwirren.<br />
Als Funktionsparameter benutze ich daher eher Referenzen, Zeiger bleiben für bestimmte Beziehungen zwischen Klassen und für dynamische Speicherverwaltung vorbehalten.</p>
</blockquote>
<p>Ich finde die Spaziergang-Funktion sehr gut nachvollziehbar, würde allerdings hund als optionalen Parameter noch 0 setzen. Das dokumentiert die Verwendung einen Tick besser.</p>
<p>Funktionen zu überladen mit dem einzigen Ziel, für (ansonsten) optionale Parameter Referenzen verwenden zu können, finde ich übertrieben. Die eine Spaziergang-Variante (mit hund = 0) ist für mich lesbar und keineswegs verwirrend.</p>
<p>Ich neige auch dazu, die Parameter der internen Verwendung anzupassen. Wenn ich intern ohnehin einen Hund* verwende (was ja bei optionalen Parametern nötig ist), nehme ich den Hund auch als Pointer entgegen.</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755583</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Wed, 05 Aug 2009 09:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 10:00:26 GMT]]></title><description><![CDATA[<p><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/1755586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755586</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 05 Aug 2009 10:00:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger vs. Referenz on Wed, 05 Aug 2009 13:42:15 GMT]]></title><description><![CDATA[<p>Ich nehme Zeiger, wenn ich erlauben will, daß der Pointee verändert wird. Wenn nicht, wird's eine Referenz auf const, die fühlt sich genauso an wie eine Wertübergabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755792</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 05 Aug 2009 13:42:15 GMT</pubDate></item></channel></rss>