C++ 标准 I/O 流类ios
定义了两个重载运算符!
,void*
用于检查流的状态。
例如:
ifstream fin("hello.txt");
if (fin) {} // ios::operator void*() is called
if (!fin) {} // ios::operator !() is called
但是,我认为两个重载的运算符是过度的。为什么不只是一个重载函数operator bool()
?
bool
这可能是因为 I/O 流类在成为 C++ 关键字之一之前被广泛使用。换句话说,将它们保留在那里只是为了向后兼容。
如果只是为了向后兼容,为什么不将它们标记为已弃用?如果不是为了向后兼容,那又是为了什么?