<?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 und Klassen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche mich gerade an das Thema const ranzutasten.</p>
<p>Jetzt steht in meinem Buch, dass ich Instanzmethoden als const auszeichnen soll, wenn diese den Objektstatus der Instanz nicht ändern.</p>
<p>Das ist doch eigentlich bei getter-Methoden die einen Wert zurueckliefern immer der Fall.</p>
<p>Wie sieht es mit zurueckgelieferten Referenzen aus, sagen wir ich habe ein Attribut userName und der getter ist kein Problem, ich gebe den string als Referenz zurück, es existiert aber auch eine setUserName()-Methode - ich habe also nichts dagegen, wenn diese String-Instanz irgendwann im Programm geändert wird und wenn dieser String gar als Parameter meiner setUserName()-Methode auftritt und dann ja den Objektzustand meiner Gesamtinstanz ändert.</p>
<p>Wann vergebt ihr das const bei einer Methode?<br />
Wann vergebt ihr const als Rückgabetyp bei einer Methode?<br />
Wann vergebt ihr const beim Parameter einer Methode?</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293175/const-und-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 13:09:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293175.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Sep 2011 21:13:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 21:13:27 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich versuche mich gerade an das Thema const ranzutasten.</p>
<p>Jetzt steht in meinem Buch, dass ich Instanzmethoden als const auszeichnen soll, wenn diese den Objektstatus der Instanz nicht ändern.</p>
<p>Das ist doch eigentlich bei getter-Methoden die einen Wert zurueckliefern immer der Fall.</p>
<p>Wie sieht es mit zurueckgelieferten Referenzen aus, sagen wir ich habe ein Attribut userName und der getter ist kein Problem, ich gebe den string als Referenz zurück, es existiert aber auch eine setUserName()-Methode - ich habe also nichts dagegen, wenn diese String-Instanz irgendwann im Programm geändert wird und wenn dieser String gar als Parameter meiner setUserName()-Methode auftritt und dann ja den Objektzustand meiner Gesamtinstanz ändert.</p>
<p>Wann vergebt ihr das const bei einer Methode?<br />
Wann vergebt ihr const als Rückgabetyp bei einer Methode?<br />
Wann vergebt ihr const beim Parameter einer Methode?</p>
<p>Danke vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124102</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 26 Sep 2011 21:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 21:20:31 GMT]]></title><description><![CDATA[<p>Immer das logische const.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124105</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 26 Sep 2011 21:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 21:22:07 GMT]]></title><description><![CDATA[<p>Wenn du eine Referenz zurück gibst, die selbst nicht const ist, dann ist die Methode auch nicht const. Aber so etwas sollte man eigentlich nicht machen (dann kann man den Member auch gleich public machen).</p>
<blockquote>
<p>Wann vergebt ihr das const bei einer Methode?</p>
</blockquote>
<p>Wenn die Methode das Objekt nicht ändert, dann sollte die Methode const sein. Nach Möglichkeit sollte jede Methode, die das Objekt nicht offensichtlich ändert const sein (für interne Buffer etc. gibt es ja mutable)</p>
<blockquote>
<p>Wann vergebt ihr const als Rückgabetyp bei einer Methode?<br />
Wann vergebt ihr const beim Parameter einer Methode?</p>
</blockquote>
<p>Wenn es sich um Referenzen handelt, die konstant sein sollen (also wenn die Referenzen nur dazu dienen, dass unnötiges Kopieren vermieden wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124106</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Mon, 26 Sep 2011 21:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 21:23:32 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Wann vergebt ihr das const bei einer Methode?<br />
Wann vergebt ihr const als Rückgabetyp bei einer Methode?<br />
Wann vergebt ihr const beim Parameter einer Methode?</p>
<p>Danke vorab.</p>
</blockquote>
<p>Ich konnte dir nicht ganz folgen, aber um die Fragen zu beantworten:<br />
-Wenn Instanzen/Variablen oder Objekte der Klasse nicht verändert werden<br />
-Wenn der Rückgabetyp später nicht verändert werden soll (!?)<br />
-Selbiges, wenn die Parameter halt nicht verändert werden sollen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124108</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Sep 2011 21:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 21:24:25 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Wie sieht es mit zurueckgelieferten Referenzen aus</p>
</blockquote>
<p>So:</p>
<pre><code class="language-cpp">const std::string&amp; name() const { return name_; }
      std::string&amp; name()       { return name_; }
</code></pre>
<p>Setter werden damit unnötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124110</guid><dc:creator><![CDATA[constdevil]]></dc:creator><pubDate>Mon, 26 Sep 2011 21:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 22:53:53 GMT]]></title><description><![CDATA[<p>constdevil schrieb:</p>
<blockquote>
<p>Setter werden damit unnötig.</p>
</blockquote>
<p>Kapselung auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124132</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 26 Sep 2011 22:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 23:06:01 GMT]]></title><description><![CDATA[<p>Hi, also so sollte es passen, sofern ich die Kapselung beibehalten will, wenn ich euch richtig verstanden habe ...</p>
<pre><code class="language-cpp">const std::vector&lt;std::string&gt;&amp; Properties::getAminoAlphabet() const {
  return this-&gt;aminoAlphabet;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124135</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 26 Sep 2011 23:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to const und Klassen on Mon, 26 Sep 2011 23:25:48 GMT]]></title><description><![CDATA[<p>Ja, wobei Container-Rückgabe wieder ein Thema für sich ist. Manchmal kann es sinnvoller sein, vom genauen Containertypen zu abstrahieren. Alternativen sind Paare von <code>begin()</code> - und <code>end()</code> -Iteratoren in der Schnittstelle, Range, Output-Iterator, Visitor, ...</p>
<p>Aber direkt einen Container zurückgeben ist manchmal ganz praktisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124137</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 26 Sep 2011 23:25:48 GMT</pubDate></item></channel></rss>