相当于Java的toString的C ++?

博格丹·巴兰

我想控制写入流的内容,即cout针对自定义类的对象。在C ++中有可能吗?在Java中,您可以toString()出于类似目的重写该方法。

某物

在C ++中,您可以重载operator<<forostream和您的自定义类:

class A {
public:
  int i;
};

std::ostream& operator<<(std::ostream &strm, const A &a) {
  return strm << "A(" << a.i << ")";
}

这样,您可以在流上输出类的实例:

A x = ...;
std::cout << x << std::endl;

如果您operator<<希望打印出类的内部结构A并且确实需要访问其私有成员和受保护成员,则还可以将其声明为朋友函数:

class A {
private:
  friend std::ostream& operator<<(std::ostream&, const A&);
  int j;
};

std::ostream& operator<<(std::ostream &strm, const A &a) {
  return strm << "A(" << a.j << ")";
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章