这是一个“最佳设计”问题。我知道有很多方法可以做到这一点。问题是,哪个是有利的,原因是什么。
一般来说:我有一堆包含不同类型数据的类。每个班级都与其他班级略有不同。在某些时候,我可能想要输出这些类中包含的数据,每个类实例在不同的时间点。我看到了两种实现方式:
a)为每个类编写某种“输出()”方法。当我想输出时,我必须依靠这种方法存在。
b)编写一个类“OutputClasses”,它有一个方法“output()”,它为每个类处理不同的输出
哪一种是“标准”或预期的方式?以上之一还是其他?
推荐的方法是:
ostream& YourClass::Output(ostream& os) const;
每个类中的成员函数以及“独立”重载 << 运算符来调用它:
ostream& operator<<(ostream& os, const YourClass&c)
{
return c.Output(os);
}
资料来源:Herb Sutter 的“Exceptional C++” ,第 20 条。类机制