<?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[Fragen zu const bei Referenz]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Counter{
public:
	Counter();
	~Counter(){}
	int GetItsVal(){return itsVal}; 
	void SetItsVal(int x) {itsVal=x;}
	const Counter&amp; operator++ ();
	const Counter operator++ (int);

private:
	int itsVal;
};

Counter::Counter():itsVal(0)
{}
const Counter&amp; Counter::operator ++(){
	++itsVal;
	return *this;
}

const Counter Counter::operator ++(int){
	Counter temp(*this);
	++itsVal;
	return temp;
}

int main(){
//blabla
	return 0;
}
</code></pre>
<p>Wozu wird hier das<br />
&quot;const&quot; vor &quot;Counter&amp; operator++ ();&quot; gesetzt ?</p>
<p>Wenn ich dann sowas habe wie</p>
<pre><code class="language-cpp">const Counter  &amp;Function(const Counter &amp; input){
//bla bla
}
</code></pre>
<p>wo ist da der Unterschied zu</p>
<pre><code class="language-cpp">const Counter &amp; const Function(const Counter &amp; input){
//bla bla
}

const Counter  &amp;Function(const Counter &amp; input) const {
//bla bla
}
</code></pre>
<p>[/cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201114/fragen-zu-const-bei-referenz</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 18:37:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201114.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Dec 2007 16:00:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu const bei Referenz on Mon, 24 Dec 2007 16:00:30 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Counter{
public:
	Counter();
	~Counter(){}
	int GetItsVal(){return itsVal}; 
	void SetItsVal(int x) {itsVal=x;}
	const Counter&amp; operator++ ();
	const Counter operator++ (int);

private:
	int itsVal;
};

Counter::Counter():itsVal(0)
{}
const Counter&amp; Counter::operator ++(){
	++itsVal;
	return *this;
}

const Counter Counter::operator ++(int){
	Counter temp(*this);
	++itsVal;
	return temp;
}

int main(){
//blabla
	return 0;
}
</code></pre>
<p>Wozu wird hier das<br />
&quot;const&quot; vor &quot;Counter&amp; operator++ ();&quot; gesetzt ?</p>
<p>Wenn ich dann sowas habe wie</p>
<pre><code class="language-cpp">const Counter  &amp;Function(const Counter &amp; input){
//bla bla
}
</code></pre>
<p>wo ist da der Unterschied zu</p>
<pre><code class="language-cpp">const Counter &amp; const Function(const Counter &amp; input){
//bla bla
}

const Counter  &amp;Function(const Counter &amp; input) const {
//bla bla
}
</code></pre>
<p>[/cpp]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425674</guid><dc:creator><![CDATA[neuling.c]]></dc:creator><pubDate>Mon, 24 Dec 2007 16:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu const bei Referenz on Mon, 24 Dec 2007 17:55:51 GMT]]></title><description><![CDATA[<p>Wo ist der Unterschied ob ich</p>
<pre><code class="language-cpp">const Counter&amp; Counter::operator++ (){ itsVal++; return *this; }
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">Counter Counter::operator++ (){ itsVal++; return *this; }
</code></pre>
<p>verwende bei:</p>
<pre><code class="language-cpp">int main(){ 
Counter i;
 Counter j=i++ ;
}
</code></pre>
<p>Durch die Zuweisung Counter j=i++ ; wird doch der Wert i angeguckt und eine entsprechende Kopie erstellt, die dann j zugewiesen wird. Um einen Vorteil zu erhalten, müsste ich doch dann schreiben</p>
<pre><code class="language-cpp">Counter &amp;j=i++ ;
</code></pre>
<p>da hierbei j nur auf das Objekt i zeigt. Daher verstehe ich das Beispiel nicht, welches ich aus einem Buch hab. Dort wird nämlich die erste Variante benutzt. Und wie gesagt, warum in der Def der Methode ein const davor stehen soll ich mir auch nicht klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425694</guid><dc:creator><![CDATA[newcomer]]></dc:creator><pubDate>Mon, 24 Dec 2007 17:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu const bei Referenz on Mon, 24 Dec 2007 22:03:40 GMT]]></title><description><![CDATA[<p>Es wird eine Referenz zurückgegeben, welche ein weiteres, unnötiges Kopieren erspart. Konstant deshalb, damit man mit dem Ausdruck nicht das Objekt verändern kann.</p>
<pre><code class="language-cpp">const Counter&amp; Counter::operator++() { itsVal++; return *this; }
</code></pre>
<p>Es wird *this zurückgegeben, also das Objekt, für welches die Operatorfunktion aufgerufen wird, aber eben nicht als Kopie (langsamer) sondern als konstante Referenz (Lerne, was eine Referenz ist, falls du es nicht weißt).</p>
<p>Wenn es keine Referenz auf ein konstantes Objekt wäre, könnte man das...</p>
<p>Counter a, b;<br />
(a + b).schreibendeMethodeVonA();</p>
<p>...machen. Und das ist böse! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Außerdem wäre die Operatorfunktion dann nicht für konstante Counter-Objekte geeignet.</p>
<p>MfG :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425749</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 24 Dec 2007 22:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu const bei Referenz on Tue, 25 Dec 2007 06:29:51 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Und das ist böse! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
</blockquote>
<p>So böse wie der Weihnachtsmann. Aber ich hoffe, dass irgendwann auch noch der Letzte kapiert, dass const eine Bedeutung hat und nicht bloß der Dekoration dient. mehr != besser</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425807</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 25 Dec 2007 06:29:51 GMT</pubDate></item></channel></rss>