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