一个班级应该能够输出其内容还是另一个班级应该这样做?

时间:2013-09-27 11:19:04

标签: c++ oop io output

这是一个“最佳设计”问题。我知道有很多方法可以做到这一点。问题是,哪个是有利的原因。

一般来说:我有一堆包含不同类型数据的类。每个班级与其他班级略有不同。在某些时候,我可能想要输出这些类中包含的数据,每个类实例在不同的时间点。我看到了两种实现方法:

a)为每个类编写某种“output()”方法。当我想输出时,我必须依靠这种方法来存在。

b)编写一个“OutputClasses”类,它有一个方法“output()”,它以不同的方式处理每个类的输出

哪一种是“标准”或预期的方式?上面的一个或其他什么?

1 个答案:

答案 0 :(得分:2)

推荐的方法是:

ostream& YourClass::Output(ostream& os) const;

每个类中的成员函数以及“独立”重载<<运营商称之为:

ostream& operator<<(ostream& os, const YourClass&c)
{
    return c.Output(os);
}

来源:Herb Sutter的"Exceptional C++",第20项。类力学

Sutter’s Mill