1. stream重载了两个操作符:
其中一个是类型转换操作符:operator void*(),判断stream是否出错,相当于!fail()
可以用它判断stream的错误情况:
while (std::cin){
...
}
因为控制结构中的布尔条件并非不是非得直接转换为bool不可,只要能够转换为某个整形或者指针性别就够了。所以用operator void*也没问题。
(另外类型的转换只能在有直接转换操作符的情况下,才能转化,不能通过两次转换操作符转换到需要的类型。c++ primer 4th 14.9.1,3.)
2.相对的,类的构造函数(只有一个参数),可以在需要这个类作为参数的地方,从其他类型通过构造函数来转换。有一点不同的是,单参构造函数可以通过explicit来禁止这种转换,而转换操作符没有这种机制。
3.
类型转换函数:类-->其他类型
单参构造函数:其他类型-->类