lassen Sie uns sagen, dass ich eine Zeigervariable definieren einiger Klassentyp ptrClass sein:warum tut dies if-Anweisung nicht seg Fehler [C++]
ptrClass *ptr;
und lassen Sie uns dieses ptrClass
sagen hat eine Memberfunktion get()
aufgerufen, die eine zurückgibt Zeiger, der auf nichts zeigt.
also, wenn wir tun:
ptr->get();
dies in einem seg Fehler führen würde.
aber wenn wir if(ptr->get())
tun, führt dies nicht zu einem seg-Fehler (die if-Anweisung wird einfach nicht ausgeführt). Kann jemand erklären, warum das so ist? Muss das Programm ptr->get()
ausführen, was zu einem seg-Fehler führen sollte, um die if-Anweisungsbedingung zu überprüfen?
Können Sie uns einen minimalen Beispielcode zeigen, der den Fehler reproduziert? Wir wissen nichts über ptrClass – KABoissonneault
Sie haben einfach ** undefiniertes Verhalten ** Dereferenzierung eines nicht initialisierten 'ptrClass * ptr;' -Zeigers, die Ihr Beispiel gut beweist. –
Die Verwendung von 'ptr-> get()' ist ein undefiniertes Verhalten, wenn 'ptr' nicht auf ein gültiges Objekt zeigt. Es macht keinen Sinn, ein undefiniertes Verhalten zu verstehen. Per definitionem ist es undefiniert. Alles kann passieren. –