c++ - 这个片段有什么作用?指向自身的静态指针
问题描述
class X
{
private:
static X* obj;
X(){};
public:
static X* setObj();
static void removeObj();
};
X* X::obj = nullptr;
X* X::setObj()
{
if ( obj == nullptr )
obj = new X;
return obj;
}
void X::removeObj()
{
delete obj;
obj = nullptr;
}
不能完全理解类和函数的作用,到目前为止,我知道它会创建一个对象,还是没有创建对象?
解决方案
它是一个Singleton,但在多线程使用中可能会出现问题。这是在 C++11 中执行此操作的正确方法- 更改名称以匹配您的代码:
X &getObj()
{
static X inst(...);
return inst;
}
无需显式删除对象,因为运行时会在关闭时自动删除。
推荐阅读
- android - 使用 Retrofit 将无密钥 JSON 存储到 Realm
- unity3d - 玩家在移动前暂停一秒钟(在某些设备上)
- android - 如何为 Room 数据库设置文本编码?
- jdbc - Kotlin:创建自定义 CoroutineContext
- networking - 如何从IP获取主机
- javascript - 开玩笑地测试一个没有返回的函数
- c# - 与 EFCore 2.1 的一对一关系
- python - Python-pptx:复制幻灯片
- ruby-on-rails - Rails 嵌套属性 JSON 格式
- node.js - 将 Bing Web 搜索 API 与 QnA 聊天机器人集成