发送 std::endl 到流给出内存地址

sending std::endl to stream gives memory address

谁能给我解释一下为什么这个程序会把地址发送到 std::cout?

#include<string>
#include<iostream>
#include<fstream>


std::ostream& stuff(std::ostream& o, std::string s)
{
    o << s << std::endl;
    return o;
}

int main(){

    std::cout << stuff(std::cout, "word") << std::endl;

}

是main()中的std::endl引起的..但是为什么呢??

输出:

word
0x804a064

你的函数 stuff returns 传递给它的 std::ostream

这意味着您的代码:

std::cout << stuff(std::cout, "word") << std::endl;

实际调用:

std::cout << (std::cout) << std::endl;
             ^^^^^^^^^^^ this is the result of calling "stuff"

您正在输出 std::cout 对象的地址。

您的程序在功能上等同于:

std::cout << "word" << std::endl;
std::cout << std::cout << std::endl;