πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #969

Re: Probleme mit statischen Variablen in Methoden von Klassen.

#969
From: Jens Ittel [ET]
Date: Thu, 07 Dec 1995 12:47
52 lines
2767 bytes
Nik Wiesel wrote:
> 
> Hallo,
> ich habe hier ein problem mit der Handhabung statischer Variablen in Methoden
> von Klassen. Ich habe dazu mal nachfolgendes Beispielprogramm erstellt.
> Die Klasse A enthaelt die Methode Test. In dieser Methode wird eine statische
> Integervariable definiert.
>  Hier stellt sich fuer mich folgendes Problem: Wenn nun mehre Instanzen dieser
> Klasse erzeugt werden und die Methode der jeweiligen Instanz aufgerufen wird,
> dann nutzen alle Methoden dieser Klasse die selbe(!) Variable obwohl die
> statische definition lokal(!) innerhalb der Methode erfolgte und nicht
> innerhalb der Klasse. Wenn die statische Variable innerhalb der Klasse
> definiert wΓΌrde, waere auch mir klar, dass alle Instanzen die selbe statische
> Variable nutzen wuerden.
>  Wieso geschieht dies auch wenn die statische Variable lokal in einer Methode
> definiert wird?
> 
> Anstatt wie erwartet in den Klammern vier mal eine (1) auszugeben wird von 1
> bis 4 hochgezaehlt. Es wird also die selbe variable genutzt.
 
[ Beispiel gelosecht]

> Nik Wiesel: UZS198@UNI-BONN.DE


Hallo Nik,

Ich habe auf die schnelle zwar nichts im Stroustrup gefunden, aber ein
paar grundsaetzliche Gedanken helfen Dir vielleicht weiter.

- Was Du haben willst (je Methode und Exemplar eine individuelle
  Variable) ist nichts anderes als eine Exemplarvariable. Nur das Du sie
  an einer anderen Stelle definieren wolltest.

- Eine Methode mit Zustand ist eigentlich wieder ein eigenstaendiges
  Objekt.

- Die statischen Variablen in der Methode (wie von Dir beschrieben) sind
  damit Speicherbereiche die von allen Exemplaren einer Klasse geteilt
  werden und damit in den meisten Faellen wohl nicht sinnvoll zu 
  verwenden.

Ich vermute, dass das Verhalten eng mit der Realisierung von C++
zusammenhaengt. Der Code fuer eine Methode ist fuer alle Exemplare nur
einmal da. Deshalb gilt dies auch fuer den (static) Speicher. Als
Parameter bekommt die Methode die Adresse des Datenbereichs des
Exemplars.
Der eigentliche Grund duerfte aber ein historischer sein:
  statische Variablen in Funktionen funktionieren genauso ...

Tschau
	Jens
Technical Details
Message-ID: <30C6E244.167E@student.uni-kl.de>
Path: arc1-ca.pugleaf.net!sun.rhrk.uni-kl.de!news
References: <uzs198.225.01416FE7@uni-bonn.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!sun.rhrk.uni-kl.de!news
From: "Jens Ittel [ET]" <ittel@student.uni-kl.de>
Subject: Re: Probleme mit statischen Variablen in Methoden von Klassen.
Content-Type: text/plain; charset=iso-8859-1
To: Nik Wiesel <uzs198@uni-bonn.de>
Message-ID: <30C6E244.167E@student.uni-kl.de>
Sender: news@rhrk.uni-kl.de
Content-Transfer-Encoding: 8bit
Organization: University of Kaiserslautern, Germany
References: <uzs198.225.01416FE7@uni-bonn.de>
Mime-Version: 1.0
Date: Thu, 7 Dec 1995 12:47:00 GMT
X-Mailer: Mozilla 2.0b3 (X11; I; OSF1 V3.2 alpha)