我的代码有一个ostream
对象,该对象由各种模块累积并最终显示在控制台中。我还希望将此ostream
对象写入文件,但是我是否必须改用ofstream
对象重写所有该代码,或者是否有办法将它们彼此转换(也许通过stringstream
吗?)
例如,我现有的许多功能看起来像
ostream& ClassObject::output(ostream& os) const
{
os << "Details";
return os;
}
我可以使用
ofstream
对象作为参数来调用此函数,而让ofstream
对象代替该函数来累积信息吗? 最佳答案
是的你可以。这就是OO概念subtype polymorphism的意义所在。由于ofstream
源自ostream
,因此(概念上)ofstream
的每个实例也同时是ostream
的实例。因此,您可以在需要ostream
实例的任何地方使用它。