cout<<cin;
今天不小心把 " cout < <变量 "写成了cout> > cin
执行的时候才发现
于是省略其他的东西改为
#include <iostream>
using namespace std;
int mian()
{
cout < <cin;
}
输出的是一个地址,我想问一下这个地址是输入流的地址还是cin指令所在的地址
[解决办法]
cout并不知道如何输出一个basic_istream的对象,于是编译器只好去检查有没有标准转换或用户自定义的转换可用。basic_istream对象跟一般的可输出的类型之间也不存在什么标准转换,但重载的operator void*却可以通过用户自定义转换返回一个void指针,而cout是知道如果输出void指针的。
本来basic_istream的operator void*()是用来输出返回流的内部状态的,之所以没用operator bool()是因为bool太容易产生其它让人莫名其妙的后果,比如隐式转换成整数,所以,一旦采用operator bool()的话,像这种:
int i = cin;
都可以被莫名其妙地通过编译。