0

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++ 关键字之一之前被广泛使用。换句话说,将它们保留在那里只是为了向后兼容。

如果只是为了向后兼容,为什么不将它们标记为已弃用?如果不是为了向后兼容,那又是为了什么?

4

0 回答 0