犯罪嫌疑人X
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;一样不会有什么好下场