<?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[Codeerklärung(Klasse)]]></title><description><![CDATA[<p>Hi, ich hab leichte Probleme dabei das mit den Klassen zu verstehen.<br />
Ich hab hier folgenden Code :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class CDummy {
  public:
    static int n;
    CDummy () 
    { 
	    n++; 
    };
    ~CDummy () 
    { 
	    n--; 
    };
};

int CDummy::n=0;

int main () {
  CDummy a;
  CDummy b[5];
  CDummy * c = new CDummy;
  cout &lt;&lt; a.n &lt;&lt; endl;
  delete c;
  cout &lt;&lt; b[1].n;
  cout &lt;&lt; CDummy::n &lt;&lt; endl;
  return 0;
}
</code></pre>
<p>1.Also soweit ich das verstanden habe, ist</p>
<pre><code class="language-cpp">static int n;
</code></pre>
<p>wie eine globale Variable zu handhaben, die hier :</p>
<pre><code class="language-cpp">int CDummy::n=0;
</code></pre>
<p>initialisiert wird.</p>
<p>2.Das hier :</p>
<pre><code class="language-cpp">CDummy () 
    { 
	    n++; 
    };
</code></pre>
<p>müsste doch der Konstruktor sein, oder ? Aber eigentlich sieht das eher aus wie eine Funktion ! Aber eigentlich muss das der Konstruktor sein, da hier :</p>
<pre><code class="language-cpp">~CDummy () 
    { 
	    n--; 
    };
</code></pre>
<p>ja der Destruktor folgt. ( erkennt man ja an dem &quot;~&quot;)</p>
<p>3.Was dann in der main passiert blick ich gar nicht mehr.<br />
Warum bekomme ich als Ausgabe 7 und 66 ?<br />
Kann mir das jemand erklären ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209265/codeerklärung-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 13:34:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209265.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Mar 2008 12:58:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Codeerklärung(Klasse) on Fri, 28 Mar 2008 12:58:53 GMT]]></title><description><![CDATA[<p>Hi, ich hab leichte Probleme dabei das mit den Klassen zu verstehen.<br />
Ich hab hier folgenden Code :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class CDummy {
  public:
    static int n;
    CDummy () 
    { 
	    n++; 
    };
    ~CDummy () 
    { 
	    n--; 
    };
};

int CDummy::n=0;

int main () {
  CDummy a;
  CDummy b[5];
  CDummy * c = new CDummy;
  cout &lt;&lt; a.n &lt;&lt; endl;
  delete c;
  cout &lt;&lt; b[1].n;
  cout &lt;&lt; CDummy::n &lt;&lt; endl;
  return 0;
}
</code></pre>
<p>1.Also soweit ich das verstanden habe, ist</p>
<pre><code class="language-cpp">static int n;
</code></pre>
<p>wie eine globale Variable zu handhaben, die hier :</p>
<pre><code class="language-cpp">int CDummy::n=0;
</code></pre>
<p>initialisiert wird.</p>
<p>2.Das hier :</p>
<pre><code class="language-cpp">CDummy () 
    { 
	    n++; 
    };
</code></pre>
<p>müsste doch der Konstruktor sein, oder ? Aber eigentlich sieht das eher aus wie eine Funktion ! Aber eigentlich muss das der Konstruktor sein, da hier :</p>
<pre><code class="language-cpp">~CDummy () 
    { 
	    n--; 
    };
</code></pre>
<p>ja der Destruktor folgt. ( erkennt man ja an dem &quot;~&quot;)</p>
<p>3.Was dann in der main passiert blick ich gar nicht mehr.<br />
Warum bekomme ich als Ausgabe 7 und 66 ?<br />
Kann mir das jemand erklären ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482102</guid><dc:creator><![CDATA[toxor]]></dc:creator><pubDate>Fri, 28 Mar 2008 12:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to Codeerklärung(Klasse) on Fri, 28 Mar 2008 13:21:29 GMT]]></title><description><![CDATA[<p>das nennt man Instanz-Counter.<br />
n ist die Anzahl der Instanzen, welche zur Zeit erzeugt sind.</p>
<p>7 instanzen sinds,<br />
dann wird eine mit delete[] gelöscht<br />
6 sinds dann noch.</p>
<p>66, weil du nach der ersten ausgabe kein endl hast...</p>
<p>ganz einfach eigentlich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482126</guid><dc:creator><![CDATA[Machine]]></dc:creator><pubDate>Fri, 28 Mar 2008 13:21:29 GMT</pubDate></item><item><title><![CDATA[Reply to Codeerklärung(Klasse) on Fri, 28 Mar 2008 13:28:16 GMT]]></title><description><![CDATA[<p>toxor schrieb:</p>
<blockquote>
<p>1.Also soweit ich das verstanden habe, ist</p>
<pre><code class="language-cpp">static int n;
</code></pre>
<p>wie eine globale Variable zu handhaben, die hier :</p>
<pre><code class="language-cpp">int CDummy::n=0;
</code></pre>
<p>initialisiert wird.</p>
</blockquote>
<p>Naja... so mehr oder weniger. Es ist so, dass jede Instanz der Klasse ein un die selbe Variable n &quot;enthalten&quot;.</p>
<p>toxor schrieb:</p>
<blockquote>
<p>2.Das hier :</p>
<pre><code class="language-cpp">CDummy () 
    { 
	    n++; 
    };
</code></pre>
<p>müsste doch der Konstruktor sein, oder ? Aber eigentlich sieht das eher aus wie eine Funktion ! Aber eigentlich muss das der Konstruktor sein, da hier :</p>
<pre><code class="language-cpp">~CDummy () 
    { 
	    n--; 
    };
</code></pre>
<p>ja der Destruktor folgt. ( erkennt man ja an dem &quot;~&quot;)</p>
</blockquote>
<p>Ähm, der Konstruktor ist immer eine Funktion (genauer: Methode der Klasse)...</p>
<p>toxor schrieb:</p>
<blockquote>
<p>3.Was dann in der main passiert blick ich gar nicht mehr.<br />
Warum bekomme ich als Ausgabe 7 und 66 ?<br />
Kann mir das jemand erklären ?</p>
</blockquote>
<p>Es wird 7 und zweimal 6 ausgegeben.<br />
Es wird erst eine Instanz (a) angelegt, daher wird n=1.<br />
Dann werden 5 Instanzen (b[5]) angelegt, daher wird n=1+5=6.<br />
Dann wird noch eine Instanz angelegt (c), also n=6+1=7.<br />
Das wird ausgegeben. Dann wird c wieder gelöscht und n=7-1=6.<br />
Dieses n wird dann zweimal ausgegeben. Einmal über b (ohne Zeilenumbruch...) und einmal direkt über die Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482132</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Fri, 28 Mar 2008 13:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to Codeerklärung(Klasse) on Fri, 28 Mar 2008 14:18:41 GMT]]></title><description><![CDATA[<p>vielen Dank für die Antworten, ich denke das hat mir weiter geholfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482177</guid><dc:creator><![CDATA[toxor]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:18:41 GMT</pubDate></item></channel></rss>