shreyasva
shreyasva

Reputation: 13456

Stream overloading in C++

why does void operator<<(ostream out, Test &t); return an error whereas void operator<<(ostream &out, Test &t); does not ?

Upvotes: 0

Views: 150

Answers (1)

sbi
sbi

Reputation: 224069

Because you cannot copy streams, you have to pass them per reference.

Note that the canonical form of operator<< is this:

std::ostream& operator<<(std::ostream& out, const Test &t)
{
   // write t into out
   return out;
}

returning the stream is important so that you can string output together:

std::cout << Test() << '\n';

Upvotes: 10

Related Questions