<?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[Konstante Referenz in Signatur einer Funktion]]></title><description><![CDATA[<p>Bin im Netz auf folgenden Code gestoßen:</p>
<pre><code class="language-cpp">bool LineHitsPlane(const Vector3D&amp; LineA,    
                   const Vector3D&amp; LineB,    
                   const Plane&amp; Plane,       
                   Vector3D* const pOut = 0)
</code></pre>
<p>Hätte da zwei grundlegende Fragen.</p>
<ol>
<li>
<p>Die Parameter &quot;LineA, LineB und Plane&quot; werden innerhalb der Funktion nicht verändert. Sie werden nur ausgelesen. Warum deklariert der Autor sie dann als Referenz ? Wenn sie doch eh konstant sind...</p>
</li>
<li>
<p>Ist die Reihenfolge der Schlüsselwörter &quot;Vector3D&quot; und &quot;const&quot; be Deklaration von pOut egal ? Hätte man also auch</p>
</li>
</ol>
<pre><code class="language-cpp">const Vector3D* pOut = 0
</code></pre>
<p>schreiben können ?</p>
<p>Danke<br />
Blue</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192695/konstante-referenz-in-signatur-einer-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 14:44:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192695.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Sep 2007 16:10:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstante Referenz in Signatur einer Funktion on Mon, 17 Sep 2007 16:10:02 GMT]]></title><description><![CDATA[<p>Bin im Netz auf folgenden Code gestoßen:</p>
<pre><code class="language-cpp">bool LineHitsPlane(const Vector3D&amp; LineA,    
                   const Vector3D&amp; LineB,    
                   const Plane&amp; Plane,       
                   Vector3D* const pOut = 0)
</code></pre>
<p>Hätte da zwei grundlegende Fragen.</p>
<ol>
<li>
<p>Die Parameter &quot;LineA, LineB und Plane&quot; werden innerhalb der Funktion nicht verändert. Sie werden nur ausgelesen. Warum deklariert der Autor sie dann als Referenz ? Wenn sie doch eh konstant sind...</p>
</li>
<li>
<p>Ist die Reihenfolge der Schlüsselwörter &quot;Vector3D&quot; und &quot;const&quot; be Deklaration von pOut egal ? Hätte man also auch</p>
</li>
</ol>
<pre><code class="language-cpp">const Vector3D* pOut = 0
</code></pre>
<p>schreiben können ?</p>
<p>Danke<br />
Blue</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367128</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 17 Sep 2007 16:10:02 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz in Signatur einer Funktion on Mon, 17 Sep 2007 16:14:29 GMT]]></title><description><![CDATA[<p>Blue5teel schrieb:</p>
<blockquote>
<ol>
<li>Die Parameter &quot;LineA, LineB und Plane&quot; werden innerhalb der Funktion nicht verändert. Sie werden nur ausgelesen. Warum deklariert der Autor sie dann als Referenz ? Wenn sie doch eh konstant sind...</li>
</ol>
</blockquote>
<p>Damit sie bei der Übergabe nicht kopiert werden. Das hat z.B. Auswirkungen auf die Geschwindigkeit.</p>
<blockquote>
<ol start="2">
<li>Ist die Reihenfolge der Schlüsselwörter &quot;Vector3D&quot; und &quot;const&quot; be Deklaration von pOut egal ? Hätte man also auch</li>
</ol>
<pre><code class="language-cpp">const Vector3D* pOut = 0
</code></pre>
<p>schreiben können ?</p>
</blockquote>
<p>Nein, ist nicht egal. const bezieht sich immer auf das Element, das genau links neben dem const steht. T * const x; ist also ein konstanter Pointer auf T, T const * x wäre ein Pointer auf ein konstantes T. Ausnahme: Wenn das const am Anfang steht, bezieht es sich auf den Typ T, also bedeutet const T * x; das gleiche wie T const * x;<br />
In deiner Deklaration macht das konstant-deklarieren des Pointers übrigens nicht besonders viel Sinn. Nach außen ist das sowieso wegen der Übergabe by-value nicht erkennbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367135</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 17 Sep 2007 16:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz in Signatur einer Funktion on Mon, 17 Sep 2007 16:16:48 GMT]]></title><description><![CDATA[<p>Blue5teel schrieb:</p>
<blockquote>
<ol>
<li>Die Parameter &quot;LineA, LineB und Plane&quot; werden innerhalb der Funktion nicht verändert. Sie werden nur ausgelesen. Warum deklariert der Autor sie dann als Referenz ? Wenn sie doch eh konstant sind...</li>
</ol>
</blockquote>
<p>Damit sie nicht kopiert werden. Das macht man mit so ziemlich allem, was größer als long ist.</p>
<p>Blue5teel schrieb:</p>
<blockquote>
<ol start="2">
<li>Ist die Reihenfolge der Schlüsselwörter &quot;Vector3D&quot; und &quot;const&quot; be Deklaration von pOut egal ? Hätte man also auch</li>
</ol>
<pre><code class="language-cpp">const Vector3D* pOut = 0
</code></pre>
<p>schreiben können ?</p>
</blockquote>
<p>AFAIK zählt nur, woran der * hängt.</p>
<p>/edit: Hör auf Bashar, ich benutze kaum Zeiger <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/1367136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367136</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 17 Sep 2007 16:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz in Signatur einer Funktion on Mon, 17 Sep 2007 16:18:12 GMT]]></title><description><![CDATA[<p>Ohne Referenz würde eine Read-Only Kopie erstellt werden. Das Kopieren kostet mehr Zeit als ne Referenz zu übergeben. Hat also Performance Gründe.</p>
<p>Zur 2. Frage: Es gibt einen Unterschied.</p>
<p>const Vector3D* pOut;<br />
Vector3D* const pOut;</p>
<p>Das eine heiß: Ich habe nen Pointer auf einen Datentyp &quot;const Vector3D&quot;.<br />
Das andere heiß: Ich habe einen Pointer, der nicht verändert werden darf auf einen Datentyp &quot;Vector3D&quot;.</p>
<p>Was was war hab ich vergessen. Die Syntax konnt ich mir noch nie merken. *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367143</guid><dc:creator><![CDATA[_alzheim_]]></dc:creator><pubDate>Mon, 17 Sep 2007 16:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konstante Referenz in Signatur einer Funktion on Mon, 17 Sep 2007 16:20:16 GMT]]></title><description><![CDATA[<p>Ok, danke Kollegen.<br />
Sehr aufschlussreich...</p>
<p>Blue</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367144</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Mon, 17 Sep 2007 16:20:16 GMT</pubDate></item></channel></rss>