<?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 Funktion über Pointer aushebeln]]></title><description><![CDATA[<p>Bei der suche nach einen Memory Leak bin ich über folgenden Code gestolpert.</p>
<pre><code class="language-cpp">class ClassA
{
public:
  ClassA()
  {
    pClassB = new ClassB;
  }
  ~ClassA() {}

  ClassB* getPtr() const
  {
    return pClassB;
  }
private:
  ClassB *pClassB;
};
</code></pre>
<p>Ok Memory Leak gefunden!!! Ganz einfach.<br />
Nö ist es nicht.<br />
Im Code wird die Klasse 'ClassA' benutzt um 'ClassB' zu erzeugen.<br />
Diese Klasse wird dann über die Funktion getPtr() const in eine andere Klasse Transferiert wo diese dann zerstört wird.</p>
<p>Wir hatten dann eine kleine Diskusion über das const hinter der Funktion.<br />
Kollege hat die Meinung das C++ dieses ja Zulässt und am eigentlichen Pointer ja nichts geändert wird. Also durchaus const Korrekt ist.</p>
<p>Meine Frage ist: Ist das in C++ so das hier der Pointer keine Const Problem verursacht obwohl der ganze Code mehr als nur Überdenkenswert ist.</p>
<p>BeiDemThemaNicht kein Name <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/280152/const-funktion-über-pointer-aushebeln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 05:07:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280152.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Jan 2011 15:05:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 15:05:37 GMT]]></title><description><![CDATA[<p>Bei der suche nach einen Memory Leak bin ich über folgenden Code gestolpert.</p>
<pre><code class="language-cpp">class ClassA
{
public:
  ClassA()
  {
    pClassB = new ClassB;
  }
  ~ClassA() {}

  ClassB* getPtr() const
  {
    return pClassB;
  }
private:
  ClassB *pClassB;
};
</code></pre>
<p>Ok Memory Leak gefunden!!! Ganz einfach.<br />
Nö ist es nicht.<br />
Im Code wird die Klasse 'ClassA' benutzt um 'ClassB' zu erzeugen.<br />
Diese Klasse wird dann über die Funktion getPtr() const in eine andere Klasse Transferiert wo diese dann zerstört wird.</p>
<p>Wir hatten dann eine kleine Diskusion über das const hinter der Funktion.<br />
Kollege hat die Meinung das C++ dieses ja Zulässt und am eigentlichen Pointer ja nichts geändert wird. Also durchaus const Korrekt ist.</p>
<p>Meine Frage ist: Ist das in C++ so das hier der Pointer keine Const Problem verursacht obwohl der ganze Code mehr als nur Überdenkenswert ist.</p>
<p>BeiDemThemaNicht kein Name <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2004950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004950</guid><dc:creator><![CDATA[BeiDemThemaNicht]]></dc:creator><pubDate>Mon, 10 Jan 2011 15:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 15:16:53 GMT]]></title><description><![CDATA[<p>C++ achtet nur darauf, dass innerhalb einer const-Funktion nichts (bitweise) verändert wird. Alles andere ist ihm egal. Da muss der Author etwas mitdenken.</p>
<p>Das Design ist soweit abstrahiert absolut schlecht. Factory ist in Ordnung, aber nicht das...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004964</guid><dc:creator><![CDATA[IchBinImmerUnreg]]></dc:creator><pubDate>Mon, 10 Jan 2011 15:16:53 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 15:17:58 GMT]]></title><description><![CDATA[<p>Was ist der Zweck dieser Klasse? Sie verstößt gegen jeden guten Geschmack.</p>
<p>Ich weiß jetzt auch nicht, was Du hören willst. Vielleicht stellst Du Deine Frage mal präzieser. Was verstehst Du unter &quot;const problem&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004966</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 10 Jan 2011 15:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 15:36:16 GMT]]></title><description><![CDATA[<p>@IchBinImmerUnreg</p>
<blockquote>
<p>&gt; nichts &quot;bitweise&quot; verändert wird &lt;&lt;</p>
</blockquote>
<p>Danke, das war das was ich suchte.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Das ist die einzige Funktion der Klasse. Es gibt noch mehr solcher Klassen.</p>
<blockquote>
<p>&gt; Sie verstößt gegen jeden guten Geschmack.<br />
Mmm da hätte ich noch ganz andere &quot;Ausdrücke&quot; für. <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>
</blockquote>
<p>Der ganze Code darum sieht noch viel Schlimmer aus.</p>
<p>BeiDemThemaNicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2004985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2004985</guid><dc:creator><![CDATA[BeiDemThemaNicht]]></dc:creator><pubDate>Mon, 10 Jan 2011 15:36:16 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 16:16:40 GMT]]></title><description><![CDATA[<p>Was das <code>const</code> heißt, darfst du selber bestimmen, der Compiler kann die Logik dahinter nicht verstehen und prüft nur das schon erwähnte. Wenn die <code>getPtr</code> Methode nur auf konstante Referenzen aufgerufen werden soll, dann gehört da das <code>const</code> hin, damit die Klasse const Korrekt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005015</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Mon, 10 Jan 2011 16:16:40 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 17:03:18 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Wenn die <code>getPtr</code> Methode nur auf konstante Referenzen aufgerufen werden soll, dann gehört da das <code>const</code> hin, damit die Klasse const Korrekt ist.</p>
</blockquote>
<p>Etwas anders formuliert bedeutet das: eine Klasse ist const-korrekt wenn sie const-korrekt ist.<br />
Finde ich gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005032</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 10 Jan 2011 17:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 17:46:25 GMT]]></title><description><![CDATA[<p>Siehe hierzu: <a href="http://xkcd.com/703/" rel="nofollow">http://xkcd.com/703/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005047</guid><dc:creator><![CDATA[xkcd]]></dc:creator><pubDate>Mon, 10 Jan 2011 17:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 18:57:06 GMT]]></title><description><![CDATA[<p>Genau <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2005062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005062</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 10 Jan 2011 18:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 18:58:43 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>eine Klasse ist const-korrekt wenn sie const-korrekt ist.</p>
</blockquote>
<p>Nina Hagen würde wohl damit antworten:</p>
<pre><code class="language-cpp">class Foo
{
public:
    Foo &amp; getInternals() const
    {
        return *const_cast&lt;Foo*&gt;(this);
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2005063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005063</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Mon, 10 Jan 2011 18:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 19:04:50 GMT]]></title><description><![CDATA[<p>Wenn einem der Cast stört, folgendes ist auch valide:</p>
<pre><code class="language-cpp">class Foo
{
    int a, * b;
public:
    Foo() : a(0), b(&amp;a) {}
    void set_a(int a) const
    {
	*b = a;
    }
};
</code></pre>
<p>Allerdings ist das schon mehr als nur dreckig. Dann doch lieber den Cast oder sich überlegen, ob man nicht etwas falsch macht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005067</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Mon, 10 Jan 2011 19:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Mon, 10 Jan 2011 19:17:49 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Wenn einem der Cast stört, folgendes ist auch valide:</p>
</blockquote>
<p>Dann doch lieber einfach mutable <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005075</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 10 Jan 2011 19:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Tue, 11 Jan 2011 07:05:09 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>brotbernd schrieb:</p>
<blockquote>
<p>Wenn die <code>getPtr</code> Methode nur auf konstante Referenzen aufgerufen werden soll, dann gehört da das <code>const</code> hin, damit die Klasse const Korrekt ist.</p>
</blockquote>
<p>Etwas anders formuliert bedeutet das: eine Klasse ist const-korrekt wenn sie const-korrekt ist.<br />
Finde ich gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Oder etwas allgemeiner: Etwas ist richtig, wenn es richtig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005170</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 11 Jan 2011 07:05:09 GMT</pubDate></item><item><title><![CDATA[Reply to const Funktion über Pointer aushebeln on Tue, 11 Jan 2011 15:06:32 GMT]]></title><description><![CDATA[<p>what is, is.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005287</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 11 Jan 2011 15:06:32 GMT</pubDate></item></channel></rss>