Wir alle wissen, dass Zeiger (und andere POD-Typen) initialisiert werden sollten.
Die Frage lautet dann: Wer sollte sie initialisieren?
Grundsätzlich gibt es zwei Methoden:
- Der Compiler initialisiert sie.
- Der Entwickler initialisiert sie.
Nehmen wir an, der Compiler hat alle Variablen initialisiert, die vom Entwickler nicht explizit initialisiert wurden. Dann stoßen wir auf Situationen, in denen die Initialisierung der Variablen nicht trivial war und der Entwickler dies am Deklarationspunkt nicht getan hat, weil er eine Operation ausführen und dann zuweisen musste.
Jetzt haben wir die Situation, dass der Compiler dem Code, der die Variable auf NULL initialisiert, eine zusätzliche Anweisung hinzugefügt hat. Später wird der Entwicklercode hinzugefügt, um die korrekte Initialisierung durchzuführen. Oder unter anderen Bedingungen wird die Variable möglicherweise nie verwendet. Viele C ++ - Entwickler würden unter beiden Bedingungen auf Kosten dieser zusätzlichen Anweisung schlecht schreien.
Es ist nicht nur an der Zeit. Aber auch Platz. Es gibt viele Umgebungen, in denen beide Ressourcen knapp sind und die Entwickler auch nicht aufgeben möchten.
ABER : Sie können den Effekt des Erzwingens der Initialisierung simulieren. Die meisten Compiler warnen Sie vor nicht initialisierten Variablen. Deshalb drehe ich meine Warnstufe immer auf die höchstmögliche Stufe. Weisen Sie dann den Compiler an, alle Warnungen als Fehler zu behandeln. Unter diesen Bedingungen generieren die meisten Compiler dann einen Fehler für Variablen, die nicht initialisiert, aber verwendet werden, und verhindern somit die Generierung von Code.