<?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]]></title><description><![CDATA[<p>Hallo miteinander!</p>
<p>Ich habe eine Frage zu const.<br />
Im Grunde habe ich begriffen, was const macht und wenn man es anwenden sollte.<br />
Hier aber trotzdem mal ein Beispiel:</p>
<p>Wenn ich eine solche Klasse gegeben habe:</p>
<p>class Class1<br />
{ void Method1();<br />
int MemberVariable1;}</p>
<p>gibt es kein const hinzuzufuegen, oder?</p>
<p>Wenn man aber weiss, dass<br />
void Class1::Method1()<br />
{ MemberVariable1=MemberVariable1+1;}<br />
so sollte man beim Aufruf von Method1() bei Class1 ein const einsetzen, oder?</p>
<p>Sollte man das auch allgemein machen, wenn man nicht weiss, was die FUnktion macht?<br />
..wenn man das const weglassen wuerde, machte MemberVariable1 ausserhalb der Funktion Method1 keinen Sinn, oder?</p>
<p>Gruss,<br />
Sonja</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287754/const</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 08:30:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287754.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jun 2011 12:59:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const on Fri, 03 Jun 2011 12:59:44 GMT]]></title><description><![CDATA[<p>Hallo miteinander!</p>
<p>Ich habe eine Frage zu const.<br />
Im Grunde habe ich begriffen, was const macht und wenn man es anwenden sollte.<br />
Hier aber trotzdem mal ein Beispiel:</p>
<p>Wenn ich eine solche Klasse gegeben habe:</p>
<p>class Class1<br />
{ void Method1();<br />
int MemberVariable1;}</p>
<p>gibt es kein const hinzuzufuegen, oder?</p>
<p>Wenn man aber weiss, dass<br />
void Class1::Method1()<br />
{ MemberVariable1=MemberVariable1+1;}<br />
so sollte man beim Aufruf von Method1() bei Class1 ein const einsetzen, oder?</p>
<p>Sollte man das auch allgemein machen, wenn man nicht weiss, was die FUnktion macht?<br />
..wenn man das const weglassen wuerde, machte MemberVariable1 ausserhalb der Funktion Method1 keinen Sinn, oder?</p>
<p>Gruss,<br />
Sonja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072782</guid><dc:creator><![CDATA[SonjaZ]]></dc:creator><pubDate>Fri, 03 Jun 2011 12:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to const on Fri, 03 Jun 2011 13:12:21 GMT]]></title><description><![CDATA[<p>Ich glaube du hast <code>const</code> nicht verstanden, denn sonst käme deine Frage gar nicht auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Bei <code>const</code> geht es darum, dass ein Objekt / Variable zur Laufzeit nur einmal initialisiert werden darf und ab diesem Zeitpunkt nicht mehr veränderlich ist.</p>
<p>Für eine Klasse bedeutet dies aber, das man eine Unterscheidung braucht, welche Methoden für Objekte dieser Klasse, welche als <code>const</code> deklariert wurden, zulässig sind und welche Tabu sind. D.h. insbesondere sind jene Methoden erlaubt die das Objekt selbst nicht verändern und jene, die das Objekt ändern, sind Tabu.</p>
<p>Damit der Compiler aber weiß, welche Methoden zu welcher Gruppe gehören, musst du die Methode, die auch für <code>const</code> Objekte zulässig sind, mit <code>const</code> markieren. Typische Fälle sind hierbei Getter und Setter.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
class foo{
int bar;

public:

foo(int bar) : bar(bar) {}

void setBar(int new_bar)
{
  bar = new_bar; // verändert das Objekt selbst, kann also kein const sein
}

int getBar() const
{
  return bar; // keine Veränderung am Objekt selbst möglich --&gt; kann const sein
}

};

int main()
{
  const Foo a(3);

  a.setBar(5); // Fehler!!!

  std::cout &lt;&lt; a.getBar() &lt;&lt; std::endl; // erlaubter Zugriff für const Objekt a
  return 0;
}
</code></pre>
<p>Hoffe das macht das <code>const</code> klarer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072791</guid><dc:creator><![CDATA[bmario]]></dc:creator><pubDate>Fri, 03 Jun 2011 13:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to const on Fri, 03 Jun 2011 13:25:26 GMT]]></title><description><![CDATA[<p>Danke fuer den Beitrag.</p>
<p>..darf ich noch eine Frage stellen?<br />
a.setBar(5) erzeugt einen Fehler, weil oben const foo a(3) definiert wurde, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072799</guid><dc:creator><![CDATA[SonjaZ]]></dc:creator><pubDate>Fri, 03 Jun 2011 13:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to const on Fri, 03 Jun 2011 14:13:53 GMT]]></title><description><![CDATA[<p>Ja, genau: setBar kann nur von nicht-konstanten Objekten aufgerufen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072824</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 03 Jun 2011 14:13:53 GMT</pubDate></item></channel></rss>