Why are we returning istream or ostream by reference?

why are we returning istream and osteam by refernce in th efunction their value will not change
like we are doing
istream & operator >> (istream & os, node * &head)
I don’t understand this return type of the function istream &

hello @Sachita3
their constructors are private which makes cout and cin object non copyable that is the reason why we pass istream and ostream ad reference (because we cant create copy)