c++单例模式为什么不在析构函数中释放静态的单例对象,而要加一个内嵌类 60
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
单件的实例是存储在堆中的,不会自动析构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class GarbageCollector
{
public:
GarbageCollector()
{
qDebug() << "init GarbageCollector";
}
~GarbageCollector()
{
if (Variable_Manager::sVariableManager != nullptr)
{
qDebug() << "del GarbageCollector";
delete Variable_Manager::sVariableManager;
Variable_Manager::sVariableManager = nullptr;
}
}
};
static GarbageCollector gc;//作为静态,会在程序内生存。作为栈对象,会在程序结束自动析构(顺便把sVariableManager堆对象带走)
代码内嵌在单例的类中
{
public:
GarbageCollector()
{
qDebug() << "init GarbageCollector";
}
~GarbageCollector()
{
if (Variable_Manager::sVariableManager != nullptr)
{
qDebug() << "del GarbageCollector";
delete Variable_Manager::sVariableManager;
Variable_Manager::sVariableManager = nullptr;
}
}
};
static GarbageCollector gc;//作为静态,会在程序内生存。作为栈对象,会在程序结束自动析构(顺便把sVariableManager堆对象带走)
代码内嵌在单例的类中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-03-14
展开全部
单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供 对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯 一实例的指针。
定义如下:
class CSingleton
{
//其他成员
public:
static CSingleton* GetInstance()
{
if ( m_pInstance == NULL ) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
private:
CSingleton(){};
static CSingleton * m_pInstance;
};
定义如下:
class CSingleton
{
//其他成员
public:
static CSingleton* GetInstance()
{
if ( m_pInstance == NULL ) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
private:
CSingleton(){};
static CSingleton * m_pInstance;
};
追问
我说的是释放
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询