<?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[const beim Funktionsaufruf]]></title><description><![CDATA[<p>Hio!<br />
Wann soll man bei c++ &quot;const&quot; verwenden, wenn es um Funktionsaufrufe geht?<br />
Bzw. Wie sieht da der richtige Aufbau aus?<br />
BSP:</p>
<pre><code class="language-cpp">class Vector {
//blabla
Vector(const Vector &amp;pVector);
Vector(double XKoord, double YKoord, double zKoord);
//blabla
};

Vector::Vector(const Vector &amp;pVector) {
SetXKoord(pVector.GetXKoord()); //soo? oder wie dann?
SetYKoord(pVector.GetYKoord());
SetZKoord(pVector.GetZKoord());
}

//wie sieht dann der richtig Aufruf aus? so?:
int main() {
Vector v1(10,10,10);
Vector v2(v1); oder Vector v2(&amp;v1)?
}
</code></pre>
<p>Gibt es dann noch irgendwelche Lücke oder Fälle wo man das nicht machen sollte oder sollte man der performance halber jeden Aufruf mit Objekten so gestalten?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223655/const-beim-funktionsaufruf</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 19:19:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223655.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Sep 2008 09:55:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 09:56:30 GMT]]></title><description><![CDATA[<p>Hio!<br />
Wann soll man bei c++ &quot;const&quot; verwenden, wenn es um Funktionsaufrufe geht?<br />
Bzw. Wie sieht da der richtige Aufbau aus?<br />
BSP:</p>
<pre><code class="language-cpp">class Vector {
//blabla
Vector(const Vector &amp;pVector);
Vector(double XKoord, double YKoord, double zKoord);
//blabla
};

Vector::Vector(const Vector &amp;pVector) {
SetXKoord(pVector.GetXKoord()); //soo? oder wie dann?
SetYKoord(pVector.GetYKoord());
SetZKoord(pVector.GetZKoord());
}

//wie sieht dann der richtig Aufruf aus? so?:
int main() {
Vector v1(10,10,10);
Vector v2(v1); oder Vector v2(&amp;v1)?
}
</code></pre>
<p>Gibt es dann noch irgendwelche Lücke oder Fälle wo man das nicht machen sollte oder sollte man der performance halber jeden Aufruf mit Objekten so gestalten?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590131</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Mon, 29 Sep 2008 09:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 10:16:12 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>Hio!</p>
<p>[cpp] class Vector {<br />
//blabla<br />
Vector(const Vector &amp;pVector);<br />
Vector(double XKoord, double YKoord, double zKoord);<br />
//blabla<br />
};</p>
<p>Vector::Vector(const Vector &amp;pVector) {<br />
SetXKoord(pVector.GetXKoord()); /*soo? oder wie dann? **Ja, genau so</p>
<p>wobei auch XKoord = pVector.XKoord; funkionieren würde<br />
***/</p>
<p>SetYKoord(pVector.GetYKoord());<br />
SetZKoord(pVector.GetZKoord());<br />
}</p>
<p>//wie sieht dann der richtig Aufruf aus? so?:<br />
int main() {<br />
Vector v1(10,10,10);<br />
Vector v2(v1); /*&lt;--- So ist richtig, für den Aufrufer ist es transparent,<br />
ob die aufgerufene Funktion/Methode Referenzen verwendet, oder Vector v2(&amp;v1)? */<br />
}<br />
[/cpp]<br />
Gibt es dann noch irgendwelche Lücke oder Fälle wo man das nicht machen sollte oder sollte man der performance halber jeden Aufruf mit Objekten so gestalten?</p>
<p>Danke!</p>
</blockquote>
<p>const ist wichtig bei Parameterübergabe per Referenz, wenn das übergebene Objekt nicht verändert werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590142</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 29 Sep 2008 10:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 10:25:44 GMT]]></title><description><![CDATA[<p>Hmmm komischerweise bekomme ich beim Zugriff auf &quot;GetXKoord()&quot; dann diese Meldung:</p>
<p>passing `const Vector' as `this' argument of `double Vector::GetXKoord()' discards qualifiers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590143</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Mon, 29 Sep 2008 10:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 10:29:46 GMT]]></title><description><![CDATA[<p>Pille456 schrieb:</p>
<blockquote>
<p>Hmmm komischerweise bekomme ich beim Zugriff auf &quot;GetXKoord()&quot; dann diese Meldung:</p>
<p>passing `const Vector' as `this' argument of `double Vector::GetXKoord()' discards qualifiers</p>
</blockquote>
<p>Das liegt daran dass du GetXKoord() für ein konstantes Objekt aufrufst. Das geht nur wenn du GetXKoord so deklarierst dass es das entsprechende Objekt konstant lässt:</p>
<pre><code class="language-cpp">class Vector
{
public:
  double GetXKoord() const; //&lt;-- const!
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1590151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590151</guid><dc:creator><![CDATA[pumuckl@logged_off]]></dc:creator><pubDate>Mon, 29 Sep 2008 10:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 10:31:35 GMT]]></title><description><![CDATA[<p>Beispiel:</p>
<pre><code class="language-cpp">void doRight(const std::string&amp; s)
{
}

void doWrong(std::string&amp; s)
{
}

int main()
{
    doRight(&quot;Richtig&quot;);  //Richtig: Literal wird zu const Referenz auf temporäres string Objekt
    doWrong(&quot;Falsch&quot;);   //Falsch: Literal wird zu Referenz auf temporäres string Objekt. (Geht nicht)
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1590155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590155</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 29 Sep 2008 10:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to const beim Funktionsaufruf on Mon, 29 Sep 2008 10:33:06 GMT]]></title><description><![CDATA[<p>btw. beim Copy-Ctor brauchst Du nicht die Getter verwenden, sondern kannst direkt die Attribute auslesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590158</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Mon, 29 Sep 2008 10:33:06 GMT</pubDate></item></channel></rss>