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
成为C ++关键字之一之前广泛使用了I / O流类。换句话说,保持它们只是为了向后兼容。
如果只是为了向后兼容,为什么它们没有被标记为已弃用?如果不是为了向后兼容,那么为了什么?