重载运算符<<。此运算符不是类的朋友

overloading operator<<. This operator is not a friend of class

本文关键字:lt 运算符 朋友 重载      更新时间:2023-10-16

我必须过载:

ostream& operator<<();

这必须作为方法来实现,所以我不能作为朋友来实现。怎么做?

如果您将此运算符作为成员函数编写,那么它只会让用户感到困惑,因为运算符的左操作数将是您的类类型的对象,而不是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 );
}