【发布时间】:2016-03-02 11:19:49
【问题描述】:
我有以下代码:
#include <iostream>
using namespace std;
ostream& f(ostream& os) {
return os << "hi";
}
int main() {
cout << "hello " << f << endl;
return 0;
}
不知何故,这是可行的——输出是“你好,你好”。编译器如何解释它?我不明白如何将函数插入流中。
【问题讨论】:
-
有一个重载的
operator<<接受一个函数并调用它。它到底有多晦涩? -
这也是各种
std::endl或std::flush重载的工作方式。