Может кто-нибудь объяснить мне, почему эта программа отправляет адрес в 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;
}
Это вызвано std :: endl в main () .. но почему ??
выход:
word
0x804a064
Ваша функция 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;