码迷,mamicode.com
首页 > 编程语言 > 详细

c++中istream类型到bool类型的隐式转换

时间:2017-05-19 23:52:10      阅读:789      评论:0      收藏:0      [点我收藏+]

标签:成员函数   ios   c++   函数   .com   返回值   接收   reference   文章   

事情的起因是见到了这种用法:

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类型的隐式转换

标签:成员函数   ios   c++   函数   .com   返回值   接收   reference   文章   

原文地址:http://www.cnblogs.com/vanwoos/p/6880411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!