Fehler, Irrtümer, Fragen - Seite 2860
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ist dieses Verhalten des Compilers korrekt? Es scheint, dass A::i zum Zeitpunkt des Aufrufs der Methode A::f(), die A::i aufruft, nicht erstellt wird.
Was ist mit "geschaffen" gemeint?
static ist nur eine Möglichkeit , einen Rake zu erstellen, um eine globale Variable oder Funktion zu verstecken und die Sichtbarkeit einer Funktion oder Klasse einzuschränken
. Der Speicher für eine globale Variable ist immer vorhanden.
Und ja, für globale Variablen ist die Initialisierungsreihenfolge sehr wichtig (ich meine, vermeiden Sie den Zugriff auf die Variable, bevor sie initialisiert ist)
Dieses Beispiel funktioniert...
Im obigen Beispiel hat es funktioniert...
Werden Sie den Compiler an dieser Stelle ändern? Ich persönlich würde es gerne so belassen, wie es ist.
Werden Sie den Compiler an dieser Stelle ändern? Ich persönlich würde gerne alles so belassen, wie es ist.
Wir haben nicht vor, das Verhalten zu ändern.
Aber es gibt eine aufgeschobene Aufgabe der Erkennung von Fehlern beim Zugriff auf globale Variablen (vor der Initialisierung).
Wenn wir diese Funktion implementieren, erhalten wir beim Kompilieren des obigen Codes eine Warnung: die Funktion A::f() wird zur Initialisierung von A::i verwendet, die auf die zu initialisierende Variable A::i zugreift.
Wenn wir die Funktion implementieren, erhalten Sie beim Kompilieren des obigen Codes eine Warnmeldung: Die Funktion A::f() wird zur Initialisierung von A::i verwendet, die auf die zu initialisierende Variable A::i zugreift.
Ich danke Ihnen!
Wir haben nicht vor, das Verhalten zu ändern
Dann widerspricht es Ihrem Konzept, dass eine Variable als deklariert gilt, wenn die Deklaration vollständig ist. Warum haben Sie es überhaupt erfunden? Wenn es in einem Fall so und in einem anderen Fall anders ist
Eine gute Sprache hat einheitliche Regeln, nicht umgekehrtDann widerspricht es Ihrem eigenen Konzept, dass eine Variable als deklariert gilt, wenn die Deklaration vollständig ist. Warum haben Sie es überhaupt erfunden? Wenn es in einem Fall so und in einem anderen Fall anders ist
Eine gute Sprache hat einheitliche Regeln, nicht umgekehrtIch bin ein totaler Ignorant, aber ich wäre nicht darauf gekommen (int i = i), selbst wenn ich zu viel getrunken hätte....... 8(
Ich bin ein totaler Ignorant, aber auf diese Idee (int i = i) wäre ich nicht gekommen, selbst wenn ich zu viel getrunken hätte....... 8(
Und was ist der Hauptunterschied zum ursprünglichen Beispiel? Entfernen Sie Unnötiges und Sie werden es bekommen:
Nur dass es dort viele Fäden gibt, hier aber nur einen.
Wenn es keinen Kompilierungsfehler gibt, sollte es hier auch keinen geben (und umgekehrt), sonst ist es ein Chaos
Dann widerspricht es Ihrem eigenen Konzept, dass eine Variable als deklariert gilt, wenn die Deklaration vollständig ist. Warum haben Sie es überhaupt erfunden? Wenn es in einem Fall so und in einem anderen Fall anders ist
Eine gute Sprache hat einheitliche Regeln, nicht umgekehrtWas ist der grundlegende Unterschied zum ursprünglichen Beispiel? Nimm das zusätzliche Zeug weg und du hast es:
Nur gibt es dort viele Linien und hier nur eine
Wenn es keinen Kompilierungsfehler gibt, sollte es hier auch keinen geben (und umgekehrt), sonst ist es ein Chaos.
Sie irren sich, das ist nicht dasselbe.
Die Beschreibung einer statischen Variablen in einer Klasse ist ihre Vordefinition (ähnlich wie die Vordefinition einer Funktion oder Klasse), aber der Speicherort teilt dem Compiler lediglich mit, wo die Variable im Speicher abgelegt wird und wann sie initialisiert werden soll