我的代码有一个ostream对象,该对象由各种模块累积并最终显示在控制台中。我还希望将此ostream对象写入文件,但是我是否必须改用ofstream对象重写所有该代码,或者是否有办法将它们彼此转换(也许通过stringstream吗?)

例如,我现有的许多功能看起来像

ostream& ClassObject::output(ostream& os) const
{
    os << "Details";
    return os;
}

我可以使用ofstream对象作为参数来调用此函数,而让ofstream对象代替该函数来累积信息吗?

最佳答案

是的你可以。这就是OO概念subtype polymorphism的意义所在。由于ofstream源自ostream,因此(概念上)ofstream的每个实例也同时是ostream的实例。因此,您可以在需要ostream实例的任何地方使用它。

09-10 04:49
查看更多