Heim > Artikel > Backend-Entwicklung > Ist die Überprüfung auf „diese“ Nichtigkeit in C jemals gerechtfertigt?
Ist die Prüfung auf „diese“ Nichtigkeit jemals gerechtfertigt?
Im Bereich der objektorientierten Programmierung ist das Konzept von „diesem“ oft gleichbedeutend mit der Vorstellung des aktuellen Objekts, spielt eine entscheidende Rolle. Allerdings stellt sich in diesem Zusammenhang die Frage, ob es überhaupt Sinn macht zu prüfen, ob „this“ null ist.
Ursprüngliche Frage:
In einer Klasse mit Mitglied Funktionen stellt ein Entwickler die Frage:
„Wenn ich eine Methode mit der Bedingung „this == nullptr“ darin habe und das Ergebnis wahr ist, werde ich angewiesen, einen Fehlercode zurückzugeben. Wenn „this“ ist in der Tat null, was darauf hinweist, dass das Objekt gelöscht wurde. Kann die Methode weiterhin eine Ausgabe erzeugen? Die Antwort ist ein klares Nein. Aufrufe von Nullzeigern sind per Definition undefiniertes Verhalten. Jeder Code, der auf Prüfungen für „this“ == null basiert, ist nicht standardisiert. Es ist wichtig zu beachten, dass dies auch für nicht-virtuelle Funktionen gilt.
Ausnahmen in bestimmten Implementierungen:
Einige C-Implementierungen erlauben „this == 0“, Schaffung eines Vorbehalts gegenüber dem Standardverhalten. Bibliotheken, die speziell für solche Implementierungen entwickelt wurden, können diese Bedingung als Hack nutzen, wie am Beispiel der Paarung von VC mit MFC veranschaulicht.
Weitere Überlegungen:
Über die strengen Implementierungsregeln hinaus Andere Faktoren können zur Existenz von „this“ == null-Prüfungen beitragen. Einige Instanzen können als Debugging-Hilfsmittel dienen und Fehler abfangen, wenn die Bedingung zuvor aufgrund von Codierungsfehlern im Aufrufer aufgetreten ist. Asserts sind für diesen Zweck im Allgemeinen vorzuziehen, da sie einen geeigneteren Mechanismus zur Erkennung solcher Situationen bieten.
Schlussfolgerung:
Im Kontext von Standard C ist die Prüfung auf „dieses“ == null ist nicht gerechtfertigt. Methodenaufrufe für Nullzeiger sind von Natur aus undefiniertes Verhalten, wodurch jegliches Vertrauen auf solche Prüfungen unzuverlässig wird. Wenn diese Prüfungen während der Codeüberprüfung auftreten, sollten sie überprüft und möglicherweise durch geeignetere Fehlerbehandlungsmechanismen ersetzt werden.
Das obige ist der detaillierte Inhalt vonIst die Überprüfung auf „diese“ Nichtigkeit in C jemals gerechtfertigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!