ora è tutto molto più chiaro, ti ringrazio!

ho fatto una prova comunque, passando l'ostream per valore:

codice:
ostream& operator<<(ostream os, MiaClasse &obj)
mi si apre "ios_base.h" nel compilatore, a questa riga:

codice:
  private:
    ios_base(const ios_base&);

    ios_base&
    operator=(const ios_base&);
  };
e mi da questi errori:
codice:
In copy constructor `std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)':
`std::ios_base::ios_base(const std::ios_base&)' is private within this context 
In function `int main()': 
initializing argument 1 of `std::ostream& operator<<(std::ostream, MiaClasse&)'
aiutami a decifrare: io vedo che il costruttore di copia è definito private: quindi in questo si nota che non è previsto un costruttore di copia per un passaggio per valore?

grazie!