2017-05-19 3 views
0

Variationen dieser Frage wurden möglicherweise bereits früher gestellt. Diese Frage bezieht sich auf statische Datenelement vs globale Variable nicht statische Variable vs globale Variable.Unterschied zwischen statischem Datenelement und globaler Variable

Wir alle wissen, was statische Daten Mitglied und globale Variablen tun. Wie Compiler sie verbinden, wo sie im Speicherlayout abgebildet werden, ihre Standardwerte usw. Wenn ich darüber nachdenke, habe ich kein klares Bild von den möglichen Szenarien, in denen wir statische Datenelemente anstelle von globalen Variablen verwenden sollten.

Ich dachte an einen Anwendungsfall, bei dem Sie die Anzahl der für eine Klasse erstellten Objekte zählen möchten. Sie erstellen ein statisches Datenelement und erhöhen es im Ctor, wenn Sie ein neues Objekt erstellen. Aber bei demselben Gedanken könnten wir auch dasselbe tun, nämlich die erzeugten Objekte mit der globalen Variable zählen.

Also ist es mir bis jetzt nicht klar, was sind die Anwendungsfälle der Verwendung von statischen Daten Mitglied vs globale Variable? Irgendjemand, bitte werfen Sie ein Licht darauf.

+1

"Diese Frage bezieht sich auf statische Datenelement vs globale Variable nicht statische Variable vs globale Variable." - Was? – KonstantinL

+1

In Ihrem eigenen Beispiel kann jeder andere Code die globale Variable ändern und fehlerhafte Ergebnisse liefern. Dies bedeutet, dass die Anzahl der Konstruktionen ungenau sein könnte. Ein ordnungsgemäß gekapseltes statisches Datenelement weist keine Probleme auf, wenn Sie seinen Status steuern. – user2296177

+0

Die Schlüsselwörter: Namespace und Zugriffsrechte. – KonstantinL

Antwort

2

Sie sind in verschiedenen Bereichen:

  • Die static Datenelement Sichtbarkeit Einschränkung public/protected/private haben kann.
  • Die globale Variable kann ohne Einschränkung geändert werden
  • Die static (globale) Variable kann nur im Dateibereich geändert werden.
Verwandte Themen