一个类应该能够输出其内容,还是另一个类应该这样做

Should a class be able to output its contents or should another class do that?

本文关键字:这样做 另一个 一个 输出      更新时间:2023-10-16

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

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

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

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

哪一个是"标准"或预期的方式?以上之一还是别的什么?

推荐的方法是:

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

每个类中的成员函数以及"独立"重载<<运算符调用它:

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

资料来源:赫伯·萨特(Herb Sutter)的"特殊C++",第20项。类力学

萨特磨坊

相关文章: