<?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[Statische Klassenelemente]]></title><description><![CDATA[<p>Hi !!!</p>
<p>Ich habe den Sinn von static Variablen in Klassen noch nicht so ganz verstanden.<br />
In einem Buch steht folgendes:</p>
<p>&quot;Die Elemente eines Objektes haben eine Eigenschaft, die nicht immer wünschenswert sein muß: sie sind objektspezifisch, d.h. sie gelten für jedes Objekt einer Klasse einzeln und nie für alle zusammen. Es kann aber sinnvoll sein, klassenspezifische Elemente zu haben&quot;</p>
<p>Diesen Satz verstehe ich nicht. Vielleicht kann mir jemand dabei behilflich sein, die statischen Klassenelemente und deren Sinn zu verstehen.</p>
<p>Elemente eines Objektes sind doch beispielsweise bei int die einzelnen Zahlen.<br />
D.h. wenn ich<br />
int n = 5;<br />
habe, dann ist das Objekt doch das &quot;n&quot; und das Element ist die &quot;5&quot;. Oder verstehe ich das falsch?<br />
Aber das ist doch normal, dass die 5 nur für das n gilt, und wo kann es nicht wünschenswert sein? Wie kann es sinnvoll sein klassenspezifische Elemente zu haben? In welchen Fällen?</p>
<p>Im speziellen geht es bei mir um folgendes:<br />
Ich baue mir eine Basisklasse Matrix, die wie folgt definiert ist:</p>
<pre><code class="language-cpp">class Matrix{
private:
  // Matrix Dimension
  unsigned int m;
  unsigned int n;
  // Anzahl der Elemente ungleich 0
  unsigned int z;
public:
  Matrix(unsigned int M = 0, unsigned int N = 0, unsigned int Z = 0)
  {
    m = M;
    n = N;
    z = Z;
  }
...
}
</code></pre>
<p>Die Elemente ungleich 0 werden nach und nach in die Matrix eingegeben.</p>
<p>Es gibt auch noch zwei abgeleitete Klassen, die ähnlich definiert sind.</p>
<p>Lohnt sich hier die Deklaration der Variablen z als static?</p>
<p>Doch ich würde mir die Frage lieber selber beantworten können, wenn ich static in Klassen verstanden habe <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/topic/142854/statische-klassenelemente</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 00:14:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142854.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Apr 2006 14:21:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statische Klassenelemente on Mon, 03 Apr 2006 14:21:41 GMT]]></title><description><![CDATA[<p>Hi !!!</p>
<p>Ich habe den Sinn von static Variablen in Klassen noch nicht so ganz verstanden.<br />
In einem Buch steht folgendes:</p>
<p>&quot;Die Elemente eines Objektes haben eine Eigenschaft, die nicht immer wünschenswert sein muß: sie sind objektspezifisch, d.h. sie gelten für jedes Objekt einer Klasse einzeln und nie für alle zusammen. Es kann aber sinnvoll sein, klassenspezifische Elemente zu haben&quot;</p>
<p>Diesen Satz verstehe ich nicht. Vielleicht kann mir jemand dabei behilflich sein, die statischen Klassenelemente und deren Sinn zu verstehen.</p>
<p>Elemente eines Objektes sind doch beispielsweise bei int die einzelnen Zahlen.<br />
D.h. wenn ich<br />
int n = 5;<br />
habe, dann ist das Objekt doch das &quot;n&quot; und das Element ist die &quot;5&quot;. Oder verstehe ich das falsch?<br />
Aber das ist doch normal, dass die 5 nur für das n gilt, und wo kann es nicht wünschenswert sein? Wie kann es sinnvoll sein klassenspezifische Elemente zu haben? In welchen Fällen?</p>
<p>Im speziellen geht es bei mir um folgendes:<br />
Ich baue mir eine Basisklasse Matrix, die wie folgt definiert ist:</p>
<pre><code class="language-cpp">class Matrix{
private:
  // Matrix Dimension
  unsigned int m;
  unsigned int n;
  // Anzahl der Elemente ungleich 0
  unsigned int z;
public:
  Matrix(unsigned int M = 0, unsigned int N = 0, unsigned int Z = 0)
  {
    m = M;
    n = N;
    z = Z;
  }
...
}
</code></pre>
<p>Die Elemente ungleich 0 werden nach und nach in die Matrix eingegeben.</p>
<p>Es gibt auch noch zwei abgeleitete Klassen, die ähnlich definiert sind.</p>
<p>Lohnt sich hier die Deklaration der Variablen z als static?</p>
<p>Doch ich würde mir die Frage lieber selber beantworten können, wenn ich static in Klassen verstanden habe <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/1029706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029706</guid><dc:creator><![CDATA[bucada]]></dc:creator><pubDate>Mon, 03 Apr 2006 14:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenelemente on Mon, 03 Apr 2006 14:27:59 GMT]]></title><description><![CDATA[<p>Nein, das würde nicht funktionieren, denn das hieße, daß <strong>alle</strong><br />
Matritzen <em>denselben</em> Wert für z haben. Static-member gibt es nur<br />
einmal für alle Instanzen der Klasse.</p>
<p>Ein einfaches Beispiel um static zu verstehen:</p>
<pre><code class="language-cpp">class Matrix{ 
private: 
  // Matrix Dimension 
  unsigned int m; 
  unsigned int n; 
  unsigned int z; 
public: 
  static int insgesamtErzeugteMatrizen = 0;

  Matrix(unsigned int M = 0, unsigned int N = 0, unsigned int Z = 0) 
  { 
    m = M; 
    n = N; 
    z = Z; 
    insgesamtErzeugteMatrizen++;
  } 
... 
}
</code></pre>
<p>Die Variable <em>insgesamtErzeugteMatrizen</em> gibt es nur einmal in der<br />
Klasse Matrix (und damit auch in deren abgeleiteten) und zählt mit,<br />
wieviele Objekte du während des Programmlaufs insgesamt erzeugt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029713</guid><dc:creator><![CDATA[Javaner]]></dc:creator><pubDate>Mon, 03 Apr 2006 14:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenelemente on Mon, 03 Apr 2006 14:28:45 GMT]]></title><description><![CDATA[<p>Du hast den Satz falsch verstanden <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>
<p>Wenn Du int n = 5 machst ist 5 auf das n bezogen, logisch, würde wohl auch niemand in einem Buch erwähnen.</p>
<p>Wenn Du aber eine Klasse Matrix hast, die ein int n enthält, so ist dieses n spezifisch für jedes Objekt vom Typ Matrix. D.h. wenn Du zwei Instanzen, mat1 und mat2 hast, hat jede Instanz ihren eigenen Wert für n.</p>
<p>Wenn n static wäre, hätten nicht mat1 und mat2 je ein n, sondern die ganze Klasse Matrix hätte nur ein n. Du brauchst kein Objekt, um Matrix::n anzusprechen und wenn, bekommst Du für jedes Objekt dasselbe n (nämlich das der Klasse).</p>
<p>Und jetzt beantworte Deine Frage selbst <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/1029714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029714</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 03 Apr 2006 14:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to Statische Klassenelemente on Mon, 03 Apr 2006 14:34:58 GMT]]></title><description><![CDATA[<p>Ah, alles klar <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>Wieder mal vielen Dank für die sehr schnelle Beantwortung der Frage. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029720</guid><dc:creator><![CDATA[bucada]]></dc:creator><pubDate>Mon, 03 Apr 2006 14:34:58 GMT</pubDate></item></channel></rss>