!=运算符和文件流

时间:2010-11-27 22:35:23

标签: c++

#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;
    }

} 

如果上面的代码,有条件的是什么?我相信它是指针值,但我无法找到支持证据。

谢谢!

1 个答案:

答案 0 :(得分:4)

在ifstream上进行比较时,将调用operator void*。如果您使用visual studio,如果您选择查看代码的反汇编,则可以看到这一点。

可以找到运营商here。 如你所见:

  

返回的指针不是要引用的,只是在没有设置任何错误标志时表示成功。

因此,如果两个ifstreams都失败了,那么它们将是平等的。如果它们成功(虽然我不确定指针值来自何处),它们相等[这已在VS上测试过]。