0

有人可以向我解释为什么这个程序会向 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
4

1 回答 1

3

您的函数stuff返回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;
于 2015-07-04T04:55:14.327 回答