【问题标题】:Is typeid the same on different computers? [duplicate]typeid在不同的计算机上是否相同? [复制]
【发布时间】:2020-04-07 21:31:05
【问题描述】:

我想知道 typeid 的hash_code() 在不同的计算机上是否相同?例如:如果typeid(int).hash_code() 在另一台计算机上会是一样的吗?

【问题讨论】:

  • 确实有 0 个保证。在同一台计算机上连续两次运行相同的二进制文件时,它们甚至不必相同。一个非常明显的实现是散列一个指针地址。

标签: c++


【解决方案1】:

我想知道hash_code()的typeid在不同的电脑上是不是一样?

它可能是也可能不是。来自cppreference 的行为是:

返回一个未指定的值,这样对于所有引用相同类型的type_info 对象,它们的hash_code() 是相同的。

没有给出其他保证:type_info 引用不同类型的对象可能具有相同的 hash_code(尽管标准建议实现尽可能避免这种情况),并且同一类型的 hash_code 可以在调用同一程序。

【讨论】:

    【解决方案2】:

    来自 cppreference:

    同一类型的hash_code可以在同一程序的调用之间改变

    (引自here)。
    所以不仅不保证在不同的电脑上都一样,甚至不保证每次对同一个程序都一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      相关资源
      最近更新 更多