我正在学习C ++,我想知道将对象的已分配内存地址用作临时应用程序级别标识符是否是个好主意。
答案 0 :(得分:2)
这可能不是最好的主意。如果不出意外,它会严重限制您将来移动/克隆对象的能力。如果你依赖它来从它的ID中找到一个对象,它也会增加风险 - 陈旧的引用会导致崩溃。
答案 1 :(得分:2)
你不应该这样做。因为除了这里已经提到的内容之外,地址被重用,并且一旦旧对象被释放,你的id(本质上是指针)可以被其他对象重用。例如,如果要将此id用于访问某些会话信息,那么您很可能正在访问/修改其他用户的会话 - 这不是一件好事。但是,您可以将地址与其他一些信息结合使用,例如线程ID,当前系统时间等......
答案 2 :(得分:1)
好吧,如果使用new()创建对象,则返回的对象实例指针IS实际上是对象。在显式dispose()d之前,它将成为应用程序标识符。我尽量不在堆栈上构建对象 - 我写了太多的mutithreaded代码,所以它太危险了。
显然,地址作为ID有很多你不能做的事情 - 例如,你不能递减/递增一个指向具有前/后ID的对象。