C相当于Java的toString?

我想控制写入流的内容,即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 << ")";
}

相关文章

文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...
文章浏览阅读1.8k次,点赞11次,收藏37次。因为自己对决策树...
文章浏览阅读492次。C++ 设计模式之策略模式
文章浏览阅读683次。我也算是个C++的小白,对于C++中的谓语我...
文章浏览阅读225次。又看了一遍操作符的东西,感觉之前对操作...