<?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[Wann const?]]></title><description><![CDATA[<p>Hey!</p>
<p>Wie findet ihr es schöner? Immer const verwenden, wann man nur kann? zB wenn ich einem Objekt einen festen Namen gebe (ala std::string name), dann gleich const verwenden, weil der Name nie verändert wird? Oder doch lieber nur bei komplexeren Konstrukten, wo man sich eventuell vertun kann?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200050/wann-const</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 05:30:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200050.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Dec 2007 09:53:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 09:53:47 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Wie findet ihr es schöner? Immer const verwenden, wann man nur kann? zB wenn ich einem Objekt einen festen Namen gebe (ala std::string name), dann gleich const verwenden, weil der Name nie verändert wird? Oder doch lieber nur bei komplexeren Konstrukten, wo man sich eventuell vertun kann?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417978</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 10 Dec 2007 09:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 10:07:24 GMT]]></title><description><![CDATA[<p>const correctness ist keine frage des persönlichen geschmacks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417982</guid><dc:creator><![CDATA[der mob]]></dc:creator><pubDate>Mon, 10 Dec 2007 10:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 10:21:34 GMT]]></title><description><![CDATA[<blockquote>
<p>onst correctness ist keine frage des persönlichen geschmacks.</p>
</blockquote>
<p>Sehe ich genauso.<br />
Gruss Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417988</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Mon, 10 Dec 2007 10:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 10:27:32 GMT]]></title><description><![CDATA[<p><a href="http://www.gotw.ca/gotw/006.htm" rel="nofollow">const-correctness</a> ist vor allem eine Frage von design by contract. Also immer dann const verwenden, wenn es richtig ist (also wenn objekte auch wirklich const sind)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417993</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 10 Dec 2007 10:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 17:43:00 GMT]]></title><description><![CDATA[<p>Also wäre es Schwachsinn, hier ein const zu schreiben?</p>
<pre><code class="language-cpp">Klasse::Klasse(const std::string text)
{
    bla = text;
}

Klasse klasse(&quot;joah&quot;);

// oder
const std::string text = &quot;joar&quot;;
Klasse klasse(text);
</code></pre>
<p>Dabei sollte ich das const im Konstruktor weglassen, richtig? Weil text ja sowieso ein kopiertes Objekt ist...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418288</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 10 Dec 2007 17:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 17:51:52 GMT]]></title><description><![CDATA[<p>Hier solltest du eh eine konstante Referenz übergeben.<br />
Ich verwende const wo es nur geht. Lediglich bei primitiven Datentypen, die by value übergeben werden, finde ich es Schwachsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418291</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Mon, 10 Dec 2007 17:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 17:52:22 GMT]]></title><description><![CDATA[<p>Also in dem Fall würde ich den parameter im Ctor nicht const machen. Wird eh kopiert und der User braucht sich um seinen übergebenen String keine Sorge machen, das er verändert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418293</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 10 Dec 2007 17:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:03:41 GMT]]></title><description><![CDATA[<p>hmm:</p>
<pre><code class="language-cpp">Klasse::Klasse(const std::string text)
{
    bla = text;
}
</code></pre>
<p>Hier wird ja den Wert eh kopiert(2x) und nachdem der Konstruktor verlassen wird text zerstört.</p>
<pre><code class="language-cpp">foo::foo(std::string const&amp; text) : m_text(text) {}
</code></pre>
<p>Hier wird eine konstante Referenz übergeben. Der Wert wird NICHT kopiert.(bzw. nur in m_text)</p>
<pre><code class="language-cpp">Klasse klasse(&quot;joah&quot;);

// oder
const std::string text = &quot;joar&quot;;
Klasse klasse(text);
</code></pre>
<p>Hmm Werte, die eine bestimmte Aussage in einem Projekt haben, sollte man als Konstante hinterlagen, die einen ausschlaggebenden Namen haben.</p>
<p>Und zu guter Letzt:<br />
<a href="http://www.parashift.com/c++-faq-lite/const-correctness.html" rel="nofollow">http://www.parashift.com/c++-faq-lite/const-correctness.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418298</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:04:41 GMT]]></title><description><![CDATA[<p>Jo.</p>
<p>Aber warum eine Referenz? Das string-Objekt braucht doch beim Kopieren kaum mehr Resourcen als ne int, oder?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418299</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:10:08 GMT]]></title><description><![CDATA[<p>Ehm doch? ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418302</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:21:25 GMT]]></title><description><![CDATA[<p>Bei paar Buchstaben...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418311</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:23:22 GMT]]></title><description><![CDATA[<p>Alleine schon die Klasse belegt ne Menge Speicherplatz (die privaten Klassenmember und die Klassenmethoden brauchen auch was...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418312</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:24:31 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Aber warum eine Referenz? Das string-Objekt braucht doch beim Kopieren kaum mehr Resourcen als ne int, oder?</p>
</blockquote>
<p>ein int passt in ein register. ein string muss für die kopie konstruiert werden, was meistens eine allokation und speicherkopie bedeutet (ich lasse strategien wie cow mal außer acht). wenn ich es beziffern müsste, würde ich sagen, dass eine string-kopie mindestens einen 100000 mal größeren aufwand bedeutet als eine int-kopie (achtung: unseriöse schätzung)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418314</guid><dc:creator><![CDATA[der mob]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:34:36 GMT]]></title><description><![CDATA[<p>Yay ok stimmt wohl, weiß ja ned wie groß die string-Klasse ist.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418327</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Mon, 10 Dec 2007 18:41:18 GMT]]></title><description><![CDATA[<p>Zurück zur Ursprungsfrage: In der Hinsicht mal ich Nemerle. In dieser Programmiersprache ist *jedes* Objekt 'const', es sei denn, es wird explizit als 'mutable' ausgegeben.</p>
<p>Vergleichbar mit pur funktionalen Sprachen, wo ausnahmslos *alles* konstant ist.</p>
<p>Dementsprechend gilt auch in C++: Überall dort 'const', wo es geht. Nur dort, wo es nicht möglich ist (Zählvariablen in Schleifen vor allem), wird es weggelassen. Zugegeben, Parameter deklariere ich auch nicht 'const', weil dies irgendwie zur Schnittstelle der Funktion gehört und daher sinnlos ist. Aber *eigentlich* ist es sehr wohl sinnvoll, damit man die Parameter nicht innerhalb der Funktion ändern kann (auch, wenn das nach außen eh keine Auswirkungen hätte).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418334</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 10 Dec 2007 18:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Tue, 11 Dec 2007 08:13:30 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Also wäre es Schwachsinn, hier ein const zu schreiben?</p>
<pre><code class="language-cpp">Klasse::Klasse(const std::string text)
{
    bla = text;
}
</code></pre>
<p>...</p>
</blockquote>
<p>Ich glaube, Du vergisst einen Effekt von diesem Konstrukt: Du kannst in der Implementation des Konstruktors den Wert von text nicht mehr ändern. Auch wenn diese Änderungen für den Aufrufer vermutlich ohne Konsequenzen bleiben dürfte (Achtung: static members nicht vergessen !), hat es immer noch den Vorteil, dass es Dich (als Implementierer) vor Fehlern bewahren kann.<br />
z.B. vor solchen:</p>
<pre><code class="language-cpp">void MyClass::f(string s) {
   st = s; // st ist Member von MyClass
   st += &quot;Simon2&quot;;
   cout &lt;&lt; st;
   s += &quot; noch was&quot;; // Ooops, meinte eigentlich st
}

void MyClass::appendMsg(string s) { // Oops, meinte eigentlich string&amp;
   s += st;
}
</code></pre>
<p>und - wie schon gesagt - sichert das const auch gegen Veränderungen von static members...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418534</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 11 Dec 2007 08:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wann const? on Tue, 11 Dec 2007 08:32:50 GMT]]></title><description><![CDATA[<p>Simons Beispiel machts schon ein bissl deutlich: const-correctness allein ist nicht alles, es ist auch wichtig, Referenzen richtig zu gebracuhen oder eben nicht zu gebracuhen. Wenn ich einen Parameter per value übergebe, dann wohl nur, weil ich damit unabhängig vom Original weiterarbeiten will. Dafür sollte der Parameter dann allerdings nicht const sein. Wenn ich wiederum nichts am Parameter drehen möchte, reicht auch eine const Referenz um unnötiges Kopieren zu sparen. Ausgenommen sind builtins wie int, double &amp; Co, wo das Anlegen einer Referenz ähnlich teuer sein kann wie eine Kopie, also übergebe ich die immer per value und schreib unter Umständen ein const ran, um mir zu merken dass ich den Wert nicht ändere.</p>
<p>Alles weitere deckt das GotW das ich bone gelinkt hab denke ich sehr gut ab...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418545</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 Dec 2007 08:32:50 GMT</pubDate></item></channel></rss>