首页 > 代码库 > c++中istream类型到bool类型的隐式转换
c++中istream类型到bool类型的隐式转换
事情的起因是见到了这种用法:
while(cin>>m>>n&&m&&n)
{
}
现在分析一下,cin>>m>>n返回的是一个对istream类型的引用,然后这个返回值又与m做&&运算。已知这种写法是合法的。
可能有两种情况:(1)&&运算符被重载,允许接收istream类型的值。
(2)istream类中有成员能将istream类型转换为bool类型。
翻看手册,发现是第二种情况。http://www.cplusplus.com/reference/istream/istream/
有个继承自ios类的成员函数 operator bool(c++11标准)。这个函数返回值的依据是 若failbit 或 badbit 标志位有一个被设置就返回false。
所以正常情况 istream 转换为bool值是true,所以文章前面提到的用法是没问题的。
更详细的说明可在文章给出的链接中找到。
c++中istream类型到bool类型的隐式转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。