gpt4 book ai didi

c++ - 最佳实践 : How to get a unique identifier for the object

转载 作者:IT老高 更新时间:2023-10-28 21:39:11 28 4
gpt4 key购买 nike

我有几个对象,需要为它们生成一个唯一标识符,该标识符在每个对象的生命周期内都不会更改/重复。

基本上我想为我的对象获取/生成一个唯一的 id,就像这样

int id = reinterpret_cast<int>(&obj);

int id = (int)&obj;

我知道上面的代码是个坏主意,因为 int 可能不够大,无法存储地址等。

那么从对象中获取唯一标识符的最佳实践是什么,这将是一种可移植的解决方案?

最佳答案

根据您的“独特性”要求,有多种选择:

  • 如果在一个地址空间中唯一(“在一个程序执行中”)是可以的并且您的对象保持在内存中的位置,那么指针就可以了。但是有一些陷阱:如果您的对象存在于容器中,则每次重新分配都可能会更改对象的身份,并且如果您允许复制对象,则从某些函数返回的对象可能已在同一地址创建。
  • 如果您需要更多的全局唯一性,例如因为您正在处理通信程序或持久数据,请使用 GUID/UUId,例如 boost.uuid .
  • 您可以从某个静态计数器创建唯一整数,但请注意以下陷阱:
    • 确保您的增量是原子的
    • 防止复制或创建您的自定义复制构造函数、赋值语句。

就我个人而言,只要我能负担得起,我就会选择 UUID,因为它们让我放心,不必考虑所有的陷阱。

关于c++ - 最佳实践 : How to get a unique identifier for the object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com