#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;
}
}
如果上面的代码,条件中比较什么?我相信这是指针值,但我无法找到支持证据。
Thanks!
在 ifstream 上进行比较时operator void*
将被调用。如果您使用 Visual Studio,如果您选择查看代码的反汇编,则可以看到这一点。
可以找到运营商here。
正如您所看到的:
返回的指针并不是要被引用,它只是在没有设置任何错误标志时指示成功。
因此,如果两个 ifstreams 都失败,它们将是相等的。如果他们成功了(虽然我不确定指针值来自哪里)他们会not是相等的[这已经在 VS 上测试过了]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)