Singleton类中的初始化和清理
Initializing and Cleanup in Singleton Class
我有一个像这样的单例类:
myClass.h
class myClass
{
private:
static myClass *singleton;
myClass ( myClass const& );
myClass& operator = ( myClass const& );
myClass ( );
public:
static myClass* Instance ( );
~myClass ( );
};
myClass.cpp
myClass::myClass ( ) { };
myClass* myClass::singleton = NULL;
myClass* myClass::Instance ( )
{
if ( !singleton )
{
singleton = new myClass;
// Initialization
}
return singleton;
};
myClass::~myClass ( )
{
// Cleanup
};
现在,我需要在返回对象实例之前进行一些初始化,并在析构函数中进行一些清理。由于myClass*myClass::Instance()是一个静态函数,我不能从它访问成员变量,也不能将这些变量作为静态变量。
那么我该如何实现呢?
您可以重载myClass::Instance
以接受参数或不接受参数,并重载private
构造函数:
private:
myClass();
myClass(string);
....
public:
//Pass a value to your singleton object
myClass* myClass::Instance(string str)
{
if ( !singleton )
{
singleton = new myClass(str); //overload private constructor and pass values
// Initialization
}
return singleton;
}
//pass no value to singleton object
myClass* myClass::Instance()
{
if ( !singleton )
{
singleton = new myClass(); //overload private constructor
// Initialization
}
return singleton;
}
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 我可以使用条件运算符初始化C风格的字符串文字吗
- Singleton的静态初始化顺序
- singleton类中的初始化列表
- Singleton类中的初始化和清理
- singleton的延迟初始化问题