Wofür sind statische Variablen gedacht? Was ist der Unterschied zwischen statischem int und int?Was sind statische Variablen?
Antwort
Das static
Schlüsselwort hat vier separate Anwendungen, von denen nur zwei eng miteinander verwandt sind:
- statisch auf globaler und Namespacebereich (gilt sowohl für Variablen und Funktionen) bedeutet interne Bindung
- dies ersetzt durch unnamed namespaces und ist nicht verwandt mit dem Rest
- vor allem, andere neigen dazu, eine Art von Eindeutigkeit implizieren, aber interne Verknüpfung bedeutet gegenüber: Sie können viele haben Objekte mit dem gleichen Namen, solange jede interne Bindung hat und Sie ein nur
- statische Datenelemente „shared“ pro Übersetzungseinheit haben unter allen Instanzen der Klasse sind
- es ist mehr wie sie sind unabhängig von jeder Klasse Instanz
- dies manchmal
- statische Methoden auf einer aktuellen Instanz nicht „arbeiten“ mit statischen Methoden gruppiert
- nein dieser Zeiger;
- statische lokale Variablen (in Funktionen) können ohne Instanz aufrufen bestehen über den Umfang eines jeden Funktionsaufruf
Sowohl statische Datenelemente und statische lokale Variablen können versteckte globalen Zustand geworden und sollte verwendet werden, vorsichtig.
Nun welche zwei sind eng verwandt? Es ist nicht die zwei Klassenmitglieder — die Warnung über den globalen Zustand gibt es weg. Sie können statische Datenelemente als statische lokale Variablen betrachten, wobei die Funktionen, zu denen sie gehören, alle Methoden der Klasse sind und nicht eine einzelne Funktion.
Ich fand viele related questions, aber, überraschenderweise, keine Duplikate.
Ein statisches Element kann ohne eine Instanz referenziert werden.
Siehe „Static Members“ Abschnitt hier: http://www.cplusplus.com/doc/tutorial/classes2/
Die Frage war jedoch über statische Variablen, nicht Mitglieder. –
Es ist nicht klar, dass das OP diese Unterscheidung machte, auch wenn "variabel" der Begriff war. –
@Michael: Was könnte statische Elementvariable bedeuten (es hängt davon ab, was die ursprüngliche Frage ist und es ist nicht 100% klar). –
Statische Variablen im Datensegment initialisiert (auf x86; ändern gegebenenfalls für andere Architekturen) statt auf dem Stapel. Sie bestehen für das Leben des Programms anstatt zu verdampfen, sobald sie außer Reichweite geraten.
Es ist nicht klar, aber du scheinst zwei verschiedene Bedeutungen von Statik in einer Definition zu vermischen. –
- 1. Was sind statische Methode und Variablen?
- 2. Was sind prozessspezifische Variablen?
- 3. ASP.NET C# Statische Variablen sind global?
- 4. ASP.NET MVC Wie sicher sind statische Variablen
- 5. Sind statische Variablen in GCC threadsicher?
- 6. Was genau sind statische Konstruktoren in C#?
- 7. INotifyPropertyChanged und statische Variablen
- 8. Sind statische Variablen in einem bestimmten Thread initialisiert?
- 9. Statische Variablen Initialisierung Quiz
- 10. Statische Variablen in R
- 11. Statische Variablen in C++
- 12. Wann sind statische Servlet-Variablen in gae enthalten?
- 13. Wo java statische Variablen im Speicher gespeichert sind?
- 14. Statische Variablen versus Eigenklassenklassenvariablen, was ist der Unterschied in Ruby?
- 15. Was sind Variablen "Offset" & "Hash" in String.hashCode()?
- 16. Unveränderlichkeit und statische Variablen
- 17. Statische Variablen in Instanzmethoden
- 18. Java statische Klasse/Variablen
- 19. Zugriff auf statische Variablen
- 20. statische Variablen in Ruby
- 21. Statische Variablen in Setter
- 22. Statische Variablen in C#
- 23. Statische Variablen in ASP.NET
- 24. Sind statische Felder geerbt?
- 25. DotNet: Statische Variablen in DLL
- 26. Was ist die beste Verwendung: Cache-Objekt oder statische Variablen
- 27. Statische Initialisierung von lokalen Variablen
- 28. Was genau sind späte statische Bindungen in PHP?
- 29. Warum sind statische Klassen versiegelt?
- 30. Sind statische Java-Initialisierer threadsicher?
Mögliche Duplikate: http://stackoverflow.com/questions/1706675/file-scope-and-static-floats – sellibitze