#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;
}
}
如果上面的代码,有条件的是什么?我相信它是指针值,但我无法找到支持证据。
谢谢!
答案 0 :(得分:4)
在ifstream上进行比较时,将调用operator void*
。如果您使用visual studio,如果您选择查看代码的反汇编,则可以看到这一点。
可以找到运营商here。 如你所见:
返回的指针不是要引用的,只是在没有设置任何错误标志时表示成功。
因此,如果两个ifstreams都失败了,那么它们将是平等的。如果它们成功(虽然我不确定指针值来自何处),它们不相等[这已在VS上测试过]。