当前位置 : 主页 > 编程语言 > c++ >

C相当于Java的toString?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我想控制写入流的内容,即cout,以获取自定义类的对象.这可能在C?在 Java中,您可以覆盖toString()方法以实现类似目的. 在C中你可以重载运算符对于ostream和您的自定义类: class A {public: in
我想控制写入流的内容,即cout,以获取自定义类的对象.这可能在C?在 Java中,您可以覆盖toString()方法以实现类似目的. 在C中你可以重载运算符<<对于ostream和您的自定义类:

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;

如果您的操作符<<想要打印出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 << ")";
}
网友评论