! = Operator- und Dateiströme

9
%Vor%

Wenn der obige Code, was wird in der bedingten verglichen? Ich glaube, es sind Zeigerwerte, aber ich finde keine unterstützenden Beweise.

Danke!

    
rshepherd 27.11.2010, 22:35
quelle

1 Antwort

4

Bei einem Vergleich auf einem ifstream wird operator void* aufgerufen. Wenn Sie Visual Studio verwenden, können Sie dies sehen, wenn Sie sich die Disassemblierung des Codes ansehen.

Der Operator kann hier gefunden werden. Wie Sie sehen können:

  

Der zurückgegebene Zeiger soll nicht referenziert werden, er zeigt nur Erfolg an, wenn keine der Fehlerflags gesetzt ist.

Wenn also beide ifstreams fehlschlagen, sind sie gleich. Wenn sie erfolgreich sind (obwohl ich nicht sicher bin, woher der Zeigerwert kommt), werden sie nicht gleich sein [das wurde auf VS getestet].

    
Default 27.11.2010, 23:19
quelle

Tags und Links