重载运算符<&lt ;.这个运营商不是班级的朋友

时间:2014-04-12 10:07:53

标签: c++

我必须超载:

ostream& operator<<();

这必须以方法的形式实现,所以我不能以朋友的身份来实现。怎么做?

1 个答案:

答案 0 :(得分:1)

如果您将此运算符编写为成员函数,则它只会混淆用户,因为运算符的左操作数将是类类型的对象而不是std :: ostream。 所以你可以编写自己的成员函数而不是运算符。例如

class YourClass
{
public:
   std::ostream & out( std::ostream &os ) const
   {
      // some output
      return os;
   }
//...
};

您还可以在运算符的定义中使用此函数作为类的非成员函数。例如

std::ostream & operator <<( std::ostream &os, const YourClass &obj )
{
   return obj.out( os );
}