<?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[Unterschied zwischen Methoden]]></title><description><![CDATA[<p>θWo genau liegt der Unterschied zwischen den vier Methoden?</p>
<pre><code>int getMyVar() { return myVar; };
int getMyVar() const { return myVar; };
const int getMyVar() { return myVar; };
const int getMyVar() const { return myVar; };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322674/unterschied-zwischen-methoden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 19:40:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322674.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Jan 2014 22:35:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 22:35:43 GMT]]></title><description><![CDATA[<p>θWo genau liegt der Unterschied zwischen den vier Methoden?</p>
<pre><code>int getMyVar() { return myVar; };
int getMyVar() const { return myVar; };
const int getMyVar() { return myVar; };
const int getMyVar() const { return myVar; };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374719</guid><dc:creator><![CDATA[uzm]]></dc:creator><pubDate>Thu, 02 Jan 2014 22:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 22:39:33 GMT]]></title><description><![CDATA[<pre><code>int getMyVar() { return myVar; }; // Kann von allen Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
const int getMyVar() { return myVar; }; // Ist dasselbe wie (1), daher eine nicht erlaubte Neudefinition
const int getMyVar() const { return myVar; }; // Ist dasselbe wie (2), daher eine nicht erlaubte Neudefinition
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374721</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 02 Jan 2014 22:39:33 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 22:40:58 GMT]]></title><description><![CDATA[<p>uzm schrieb:</p>
<blockquote>
<p>θWo genau liegt der Unterschied zwischen den vier Methoden?</p>
<pre><code>int getMyVar() { return myVar; };
int getMyVar() const { return myVar; };
const int getMyVar() { return myVar; };
const int getMyVar() const { return myVar; };
</code></pre>
</blockquote>
<p>1. Siehe 2. 3. und 4.</p>
<p>2. Siehe 3. und 4.</p>
<p>3. Die temporäre Variable, die zurückgegeben wird, ist const. Das macht kein Sinn, weil diese per Definition ein r-value ist. Einem r-value kannst du eh nichts zuweisen, also ist const hier sinnlos.</p>
<p>4. Zum einen siehe 3. Zum anderen ist das hier eine Memberfunktion, die const ist, d.h. sie kann die Member des Objekts nicht ändern. Alle Member deines Objekts sind in diese Funktion sozusagen const.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374722</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 02 Jan 2014 22:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 22:47:18 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<pre><code>int getMyVar() { return myVar; }; // Kann von allen Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
</code></pre>
</blockquote>
<p>Das ist irgendwie verdreht worden.</p>
<pre><code>int getMyVar() { return myVar; }; // Kann nur von nicht-konstanten Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann von allen Instanzen aufgerufen werden
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374723</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 02 Jan 2014 22:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 23:08:26 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>3. Die temporäre Variable, die zurückgegeben wird, ist const. Das macht kein Sinn, weil diese per Definition ein r-value ist. Einem r-value kannst du eh nichts zuweisen, also ist const hier sinnlos.</p>
</blockquote>
<p>das gilt nur für built-in-typen. eigenen typen, die du nicht explizit qualifiziert hast, kannst du sehr wohl etwas zuweisen:<br />
<a href="http://ideone.com/uzCkCH" rel="nofollow">http://ideone.com/uzCkCH</a></p>
<p>wenn man den rückgabewert der funktion F (siehe zeile 10) qualifiziert, schlägt die kompilierung fehl:<br />
<a href="http://ideone.com/4gJTtG" rel="nofollow">http://ideone.com/4gJTtG</a></p>
<p>edit:</p>
<p>nwp3 schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<pre><code>int getMyVar() { return myVar; }; // Kann von allen Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
</code></pre>
</blockquote>
<p>Das ist irgendwie verdreht worden.</p>
<pre><code>int getMyVar() { return myVar; }; // Kann nur von nicht-konstanten Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann von allen Instanzen aufgerufen werden
</code></pre>
</blockquote>
<p>naja, wenn beide versionen bestehen muss man schon sagen, dass die non-const-methode nur von non-const-instanzen aus und die const-methode nur von const-instanzen aus aufgerufen werden kann. wenn man aus einem non-const-instanz aus die const-methode aufrufen will, muss man casten (cv-qualifier lassen sich auch implizit hinzufügen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374729</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 02 Jan 2014 23:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Thu, 02 Jan 2014 23:44:43 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>... und die const-methode nur von const-instanzen aus aufgerufen werden kann. wenn man aus einem non-const-instanz aus die const-methode aufrufen will, muss man casten ...</p>
</blockquote>
<p>Äh... <a href="http://ideone.com/582QQm" rel="nofollow">Nein</a>? Wenn alle verwirrt sind außer ich, dann heißt das meist, dass ich verwirrt bin. Aber ich behaupte trotzdem mal ihr seid verwirrt. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374736</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 02 Jan 2014 23:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 00:02:27 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>... und die const-methode nur von const-instanzen aus aufgerufen werden kann. wenn man aus einem non-const-instanz aus die const-methode aufrufen will, muss man casten ...</p>
</blockquote>
<p>Äh... <a href="http://ideone.com/582QQm" rel="nofollow">Nein</a>? Wenn alle verwirrt sind außer ich, dann heißt das meist, dass ich verwirrt bin. Aber ich behaupte trotzdem mal ihr seid verwirrt. :p</p>
</blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>naja, wenn beide versionen bestehen muss man schon sagen,[...]</p>
</blockquote>
<p>damit war gemeint, dass die beiden versionen gleichnamig sind.</p>
<p>edit: so wie es im ursprünglichen listing auch gewesen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374739</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Fri, 03 Jan 2014 00:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 00:49:10 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<pre><code>int getMyVar() { return myVar; }; // Kann von allen Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
const int getMyVar() { return myVar; }; // Ist dasselbe wie (1), daher eine nicht erlaubte Neudefinition
const int getMyVar() const { return myVar; }; // Ist dasselbe wie (2), daher eine nicht erlaubte Neudefinition
</code></pre>
</blockquote>
<p>Die Parameter von (3) und (4) sind mit denen von (1) bzw. (2) identisch, und die Überladung ist daher verboten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374743</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 03 Jan 2014 00:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 09:27:20 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Die Parameter von (3) und (4) sind mit denen von (1) bzw. (2) identisch, und die Überladung ist daher verboten.</p>
</blockquote>
<p>Es geht um Unterschiede in der Semantik, nicht darum, dass die alle gleichzeitig existieren sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374787</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 03 Jan 2014 09:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 10:25:57 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>naja, wenn beide versionen bestehen muss man schon sagen, dass die non-const-methode nur von non-const-instanzen aus und die const-methode nur von const-instanzen aus aufgerufen werden kann. wenn man aus einem non-const-instanz aus die const-methode aufrufen will, muss man casten (cv-qualifier lassen sich auch implizit hinzufügen).</p>
</blockquote>
<p>Das ist dann eben inkonsequent. Anders herum gilt es nämlich genauso:</p>
<pre><code>int getMyVar() { return myVar; }; // Kann nur von nicht konstanten Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
</code></pre>
<p>Wobei das auch nicht stimmt. Nicht die Instanz ist nicht konstant sondern die Referenz oder der Zeiger:</p>
<pre><code>Foo foo;  // nicht konstante Instanz
const Foo&amp; bar = foo;  // konstante Referenz
foo.getMyVar();   // getMyVar() ohne const wird aufgerufen
bar.getMyVar();   // die Instanz ist nicht konstant und dennoch wird die konstante Methode aufgerufen, da die Referenz konstant ist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374798</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 03 Jan 2014 10:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 10:37:46 GMT]]></title><description><![CDATA[<blockquote>
<p>Wobei das auch nicht stimmt.</p>
</blockquote>
<p>Das ist sowieso falsch, siehe oben, da habe ich mich vertüdelt.</p>
<blockquote>
<p>Nicht die Instanz ist nicht konstant sondern die Referenz oder der Zeiger:</p>
</blockquote>
<p>Völlig egal. Die Instanz wird als konstant behandelt, das ist was zählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374802</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 03 Jan 2014 10:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 10:51:27 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>naja, wenn beide versionen bestehen muss man schon sagen, dass die non-const-methode nur von non-const-instanzen aus und die const-methode nur von const-instanzen aus aufgerufen werden kann. wenn man aus einem non-const-instanz aus die const-methode aufrufen will, muss man casten (cv-qualifier lassen sich auch implizit hinzufügen).</p>
</blockquote>
<p>Das ist dann eben inkonsequent. Anders herum gilt es nämlich genauso:</p>
<pre><code>int getMyVar() { return myVar; }; // Kann nur von nicht konstanten Instanzen aufgerufen werden
int getMyVar() const { return myVar; }; // Kann nur von konstanten Instanzen aufgerufen werden
</code></pre>
</blockquote>
<p>das verstehe ich nicht. beides nicht. inwiefern das anders herum ist als die von mir gepostete beschreibung sowohl auch inwiefern das nicht konsistent ist.</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Wobei das auch nicht stimmt. Nicht die Instanz ist nicht konstant sondern die Referenz oder der Zeiger:</p>
<pre><code>Foo foo;  // nicht konstante Instanz
const Foo&amp; bar = foo;  // konstante Referenz
foo.getMyVar();   // getMyVar() ohne const wird aufgerufen
bar.getMyVar();   // die Instanz ist nicht konstant und dennoch wird die konstante Methode aufgerufen, da die Referenz konstant ist
</code></pre>
</blockquote>
<p>das habe ich für denkbar und für implizierbar gehalten. die referenz in deinem listing verweist auf eine konstante instanz. ein zeiger vom typ &quot; <code>Foo const*</code> &quot; zeigt auch auf eine konstante instanz. ob nun darunter tatsächlich eine top level const-qualified instanz steckt ist irrelevant.</p>
<p>edit: ich bin wie gesagt vom fall ausgegangen, dass die unterschiedlich methoden gleichzeitig deklariert sind. dass man - sofern keine konstante überladung vorhanden ist die sich in der parameterliste nicht unterscheidet - die konstante methode auch aus einer nicht-konstanten instanz (oder eben auch aus einem zeiger bzw. aus einer referenz aus, die auf eine nicht-konstante instanz verweist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ) aus aufrufen kann ist mir bewusst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374806</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Fri, 03 Jan 2014 10:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied zwischen Methoden on Fri, 03 Jan 2014 10:47:14 GMT]]></title><description><![CDATA[<p>Der arme TE...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374807</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 03 Jan 2014 10:47:14 GMT</pubDate></item></channel></rss>