ifstream对象使用了哪种运算符重载将其求值为布尔值 我是C++新手。最近我遇到了以下代码 ifstream in("somefile"); if(in){ //read the file.... }
我想知道在if条件下,哪个重载ifstream的操作符可能用于in对象自动计算为boolean。我试过了,但找不到线索。请帮帮我。提前谢谢事实上,这是一个好主意ifstream对象使用了哪种运算符重载将其求值为布尔值 我是C++新手。最近我遇到了以下代码 ifstream in("somefile"); if(in){ //read the file.... },c++,visual-c++,C++,Visual C++,我想知道在if条件下,哪个重载ifstream的操作符可能用于in对象自动计算为boolean。我试过了,但找不到线索。请帮帮我。提前谢谢事实上,这是一个好主意 如果流有效,则重写它以返回非零指针,否则返回NULL指针。它返回的指针没有意义,不应取消引用,它只在布尔上下文中进行计算。空指针转换运算符通常用于此目的。类似于 struct ifstream { typedef void * voidptr; operator voidptr() const; }; std::ifstrea
如果流有效,则重写它以返回非零指针,否则返回
NULL
指针。它返回的指针没有意义,不应取消引用,它只在布尔上下文中进行计算。空指针转换运算符通常用于此目的。类似于
struct ifstream {
typedef void * voidptr;
operator voidptr() const;
};
std::ifstream
从其基类std::ios
(std::basic_ios
)获取其到bool
的转换,该基类声明了转换函数:
explicit operator bool() const;
它返回!fail()
(在标准ISO/IEC 14882:2003的前一版本中,
std::basic_ios
有一个转换函数operator void*()const
,但该版本的标准现在已被撤销。)这里也有答案: