c – 最佳实践:如何获取对象的唯一标识符
发布时间:2020-12-16 05:52:15 所属栏目:百科 来源:网络整理
导读:我有几个对象,需要为它们生成唯一的标识符,在每个对象的生命周期内不会更改/重复. 基本上我想获取/生成一个唯一的id为我的对象,smth这样 int id = reinterpret_castint(obj); 要么 int id = (int)obj; 我理解上面的代码是坏的想法,因为int可能不够大,不能存
我有几个对象,需要为它们生成唯一的标识符,在每个对象的生命周期内不会更改/重复.
基本上我想获取/生成一个唯一的id为我的对象,smth这样 int id = reinterpret_cast<int>(&obj); 要么 int id = (int)&obj; 我理解上面的代码是坏的想法,因为int可能不够大,不能存储地址等 那么从对象中获取唯一标识符的最佳做法是什么,这将是一个便携式解决方案? 解决方法
根据您的“唯一性”要求,有几个选择:
>如果在一个地址空间内唯一(“在一个程序执行”中)是可以的,并且你的对象保留在内存中,那么指针就可以了.然而,存在一些缺陷:如果对象生活在容器中,则每次重新分配可能会改变对象的身份,如果允许复制对象,则从某个功能返回的对象可能已在同一地址创建. 确保您的增量是原子的 就我个人而言,只要我负担得起,我的选择就是UUID,因为他们提供了一些轻松的心态,而不必考虑所有的陷阱. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |