重载类的打印值

时间:2013-05-30 09:02:35

标签: c++ operator-overloading

我可以在cout函数上重载返回值吗? 我有这样的课程:

class Xxx
{
   string val = "3";
}

现在我想在没有其他方法的情况下在"3"上返回cout。 我想要那个:

Xxx myVar;
cout<<myVar;

打印"3"作为结果。

1 个答案:

答案 0 :(得分:1)

通常的方法是overloas ostream& operator<<(ostream&, T)。在这里,val是为了简单起见而公开的:

class Xxx
{
 public:
   std::string val = "3";
}

#include <ostream>
std::ostream& operator<<(std::ostream& o, const Xxx& x)
{
  return o << x.val;
}

然后

Xxx x;
std::cout << x << std::endl; // prints "3"

此方法意味着您还可以将Xxx的实例流式传输到std::cout以外的输出流类型,例如文件。