我正在为一个虚拟 rolodex 做一个家庭作业项目,它需要一个主类、一个 rolodex 类和一个卡片类。要将所有“卡片”的内容输出到控制台,分配说 main() 应该调用 rolodex 类中的 show(...) 函数,将其传递给 ostream 和 show(...) 然后迭代在卡片上,调用它们的每个 showCard() 函数。实际显示由卡片对象的 showCard() 函数完成,显示在提供的 ostream 上。
我不明白为什么 ostream 会/应该在任何地方传递。似乎任务要求这样的事情:
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;
}
而不是这样的:
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;
}
我是否误解了使用 ostream 作为参数,或者错过了一些其他明显的理由来像这样将 ostream 传递到流中?