gpt4 book ai didi

c++ - 静态变量的地址

转载 作者:可可西里 更新时间:2023-11-01 14:59:35 24 4
gpt4 key购买 nike

我正在尝试进行一个简单的类到唯一 ID 的转换。我正在考虑添加一个静态方法:

class A {
static int const *GetId() {
static int const id;
return &id;
}
};

然后每个类将由唯一的 int const * 标识。这保证有效吗?返回的指针真的是唯一的吗?有没有更好更简单的解决方案?

我还考虑过指向 std::type_info 的指针:

class A {
static std::type_info const *GetId() {
return &typeid(A);
}
};

这样更好吗?

编辑:

我不需要使用 id 进行序列化。我只想识别一小组基类,我希望某个类的所有子类都具有相同的 id

最佳答案

是的,这会起作用。每个 static local 都会在加载模块时被赋予不同的内存位置,并且它将持续存在直到模块被卸载。请记住,static locals 存储在编译期间分发的静态存储中,并且它们会一直保留到模块被卸载,因此它们将具有不同的内存位置。

关于c++ - 静态变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7525942/

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