C ++ Pasar ostream como parámetro

Estoy trabajando en un proyecto de tarea para un rolodex virtual que requiere una clase principal, una clase de rolodex y una clase de tarjeta. Para enviar el contenido de todas las "tarjetas" a la consola, la asignación dice que main () debería llamar a una función show (...) en la clase rolodex, pasándole un ostream y show (...) luego itera sobre las tarjetas, llamando a cada una de sus funciones showCard (). La visualización real se realiza mediante la función showCard () de los objetos de la tarjeta, que se muestra en el ostream proporcionado.

Lo que no entiendo es por qué una ostream debería / debería pasarse a cualquier parte. Parece que la tarea requiere algo como esto:

main() {
   Rolodex myRolodex; 
   ostream myStream; 
   myRolodex.show(myStream); 
}

void Rolodex::show(ostream& theStream) {
   //for each card 'i' in the Rolodex...
   myCard[i].show(theStream);
}

void Card::show(ostream& theStream) {
   theStream << "output some stuff" << endl;
}

en lugar de algo como esto:

main() {
   Rolodex myRolodex;  
   myRolodex.show(); //no ostream passed 
}

void Rolodex::show() {
   //for each card 'i' in the Rolodex...
   myCard[i].show();//no ostream passed
}

void Card::show() {
   cout << "output some stuff" << endl;
}

¿Estoy malinterpretando el uso de ostream como parámetro o me falta alguna otra razón obvia para pasar una ostream por la corriente de esa manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta