有人可以向我解释为什么这个程序会向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
答案 0 :(得分: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;