Heim >Backend-Entwicklung >C++ >Warum können Sie nach „delete this' in C nicht auf „this' zugreifen?
In C wirft das „lösche dies“-Konstrukt interessante Implikationen auf. Während die ersten drei Einschränkungen hinsichtlich seiner Verwendung sinnvoll erscheinen, wirft die vierte Einschränkung, die jede Interaktion mit „diesem“ nach seiner Löschung verbietet, die Frage auf: Warum?
Die Einschränkung verbietet Aktionen wie die Prüfung oder den Vergleich seines Wertes oder die Umwandlung , oder sogar ausdrucken. Dies liegt daran, dass der Wert von „this“ undefiniert wird, nachdem „delete this“ aufgerufen wurde, wodurch alle nachfolgenden Vorgänge, die ihn betreffen, ebenfalls undefiniert werden.
Obwohl bestimmte Compiler sinnvolle Aktionen ausführen können, gibt es keine Garantie von C Spezifikation. Der Compiler behält das Vorrecht, sich auf unerwartete Verhaltensweisen einzulassen, die möglicherweise die Systemintegrität gefährden. Daher sollte das Aufrufen undefinierter Verhaltensweisen immer vermieden werden.
Um diese Einschränkung zu umgehen, kann man eine Kopie des „this“-Zeigers (als Ganzzahl) erstellen, bevor man „delete this“ ausführt. Dadurch wird der ursprüngliche Wert von „this“ beibehalten und nachfolgende Vorgänge ermöglicht, ohne dass undefiniertes Verhalten auftritt.
Das obige ist der detaillierte Inhalt vonWarum können Sie nach „delete this' in C nicht auf „this' zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!