С этого вопроса & ответы - What is the correct answer for cout << c++ << c;?Оператор << - порядок оценки параметров
Я понимаю, что
std::cout<<c++<<c;
оценивается как:
std::operator<<(std::operator<<(std::cout, c++), c);
так неопределенное поведение происходит от тот факт, что сначала можно оценить один из двух параметров. Все идет нормально.
Но почему std::operator <<
? Почему не std::ostream::operator <<
называется? И если это, не будет переводить на
(ofstream::operator<<(c++)) << c;
|
returns ofstream&
В чем разница между этим и метод построения цепочки:
struct A
{
A& foo();
void goo();
};
//...
A a;
a.foo().goo();
?
Нет большой разницы. Если вы делаете 'a.foo (C++). Goo (c)' у вас опять такая же проблема. –