c++ - C++ 中的 toString 覆盖

标签 c++ tostring

在 Java 中,当一个类覆盖 .toString() 并且您执行 System.out.println() 时,它将使用它。

class MyObj {
    public String toString() { return "Hi"; }
}
...
x = new MyObj();
System.out.println(x); // prints Hi

如何在 C++ 中实现这一点,以便:

Object x = new Object();
std::cout << *x << endl;

会输出一些我为 Object 选择的有意义的字符串表示形式吗?

最佳答案

std::ostream & operator<<(std::ostream & Str, Object const & v) { 
  // print something from v to str, e.g: Str << v.getX();
  return Str;
}

如果你把它写在头文件中,记得把函数标记为内联:inline std::ostream & operator<<(... (参见 C++ super 常见问题解答 for why。)

关于c++ - C++ 中的 toString 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171739/

相关文章:

c++ - 参数默认为先例参数的值

php - PHP echo 语句中的无限递归

java - 第二次单击鼠标后,JTree 节点会更改其表示形式

java - 在 JAVA 中检查 ENUM 值与 String 的相等性

c++ - 具有覆盖的嵌套类如何工作?

c++ - C++中数组char的初始化

c++ - 不紧凑的指针类型将 int 传递给 coretelephony obj c 中 void(*)(void) 类型的参数

c++ - 作为模板非类型参数的 C 字符串适用于 gcc 6.3,但不适用于 Visual Studio 2017(19.16.27027.1 for x64)

java - 如何重新排列字符串并将它们存储在数组中?

Django CharField 转字符串