#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file0( "file0.txt" );
ifstream file1( "file1.txt" );
if (file0 != file1) {
cout << "What is being compared?" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
如果上面的代码,有条件的是什么?我相信它是指针值,但我无法找到支持证据.
谢谢!
当在 ifstream 上进行比较时,operator void*将被调用。如果您使用 Visual Studio,如果您选择查看代码的反汇编,则可以看到这一点。
可以在这里找到操作员。正如您所看到的:
返回的指针并不打算被引用,它只是在没有设置任何错误标志时指示成功。
因此,如果两个 ifstreams 都失败,它们将是相等的。如果它们成功(虽然我不确定指针值来自哪里),它们将不相等[这已经在 VS 上进行了测试]。