【问题标题】:C++ toString operator similair to Object.toString类似于 Object.toString 的 C++ toString 运算符
【发布时间】:2018-04-18 15:16:35
【问题描述】:

在 Java 中,每个 Object 都有一个 toString 方法和一个 hashcode 方法。 C++ 中的每个对象是否有等效的 hashcode 和 toString?

【问题讨论】:

标签: java c++ tostring


【解决方案1】:

没有等价物。与 JAVA 不同,并非 C++ 中的所有内容都派生自某些 (Object) 超类。没有 ::toString() 成员函数,因为 C++ 中没有超类。 C++ 也不支持反射。

话虽如此,有一个std::to_string 函数具有9 种不同的内置类型重载。要实现您想要的功能,您可以为每个类overload 输出流operator<<

【讨论】:

  • operator &lt;&lt; for std::ostream 也值得一提。
  • 该死。好吧,我想我只需要潜入苹果总部并用管道打击首席执行官,直到他同意提供良好的 java 支持:)
【解决方案2】:

语言中没有这样的内置功能。并非 C++ 中的所有内容都是对象(没有可以派生所有内容的公共类)。

【讨论】:

  • 除了函数和模板之外,C++ 中的一切都是对象。
  • 与 Java 相比,所有东西(?)都是 Object 的子类——cpp 中没有这样的东西。当然,int、chars 和其他一切都是 POD,但它们没有共同的接口。这就是我的意思。
  • 类类型和对象是有区别的。有许多非类类型对象。说“并非 c++ 中的所有内容都是类类型”会更准确。
  • @tomdol 也许改写一下,在 C++ 中,并非所有内容都派生自 Object 类?
猜你喜欢
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
相关资源
最近更新 更多