我正在嘗試使用ifstream
打開文件失敗的測試程序。代碼如下: -C++ Ifstream對象等於nullptr,但它不是一個指針?
#include <iostream>
#include <fstream>
#include <type_traits>
using namespace std;
int main()
{
ifstream ifs ("wrong_filename.txt");
cout << boolalpha;
cout << is_pointer<decltype(ifs)>::value <<"\n";
cout << (ifs==nullptr);
return 0;
}
輸出是: -
false
true
如果ifs
不是pointer
,那麼如何它等於nullptr
?
'void *'IIRC有一個強制重載。 –
任何類類型都可以通過定義隱式轉換爲指針類型或通過適當地重載'operator =='來選擇與'nullptr'相媲美。 –
詢問「疑問」時爲編譯器命名。 –