c – 最佳实践:如何获取对象的唯一标识符

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

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

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

要么

int id = (int)&obj;

我理解上面的代码是坏的想法,因为int可能不够大,不能存储地址等

那么从对象中获取唯一标识符的最佳做法是什么,这将是一个便携式解决方案?

解决方法

根据您的“唯一性”要求,有几个选择:

>如果在一个地址空间内唯一(“在一个程序执行”中)是可以的,并且你的对象保留在内存中,那么指针就可以了.然而,存在一些缺陷:如果对象生活在容器中,则每次重新分配可能会改变对象的身份,如果允许复制对象,则从某个功能返回的对象可能已在同一地址创建.
>如果您需要更全球的独特性,例如因为您正在处理通信程序或持久性的数据,请使用GUID / UUI,例如boost.uuid.
>您可以从一些静态计数器创建唯一的整数,但要注意陷阱:

确保您的增量是原子的
>防止复制或创建自定义的复制构造函数,赋值语句.

就我个人而言,只要我负担得起,我的选择就是UUID,因为他们提供了一些轻松的心态,而不必考虑所有的陷阱.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...