4 回答
TA贡献1873条经验 获得超9个赞
你需要明白这些概念:
cin是读入标准输入的istream对象
cout是写到标准输出的ostream对象
>>操作符是用于从istream对象中读入输入
<<操作符用于把输出写到ostream中
endl是输出一个换行符并刷新缓冲区
就是说endl是输出方面的,不能用于cin以及>>
TA贡献2080条经验 获得超4个赞
endl是一个模板函数名
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os)
{ return flush(__os.put(__os.widen('\n'))); }
详细的不说了,反正基本上可以这样理解,光一个不带括号的endl就是一个函数指针常量,参数是输出流,返回值是输出流的引用,然后在输出流里重载了<<运算,对这种函数指针做 os << fun 操作就相当于调用 fun(os)。使用cout << endl;
就相当于调用endl(cout);你可以声明一个函数
ostream& hahaha(ostream& os)
{
os << "Hello World!!";
return os;
}
然后使用 cout << hahaha << endl;看看会发生什么
这种函数称为操作算子,常用的有left,right,hex什么的,你可以自己搜一下
对输入流来说cin >> endl;当然会报错,因为没有重载,你往一个函数指针常量里输入,就像cin >> printf;或是cin >> strcpy;一样不会有什么好下场
- 4 回答
- 0 关注
- 1711 浏览
添加回答
举报