В Code 1 объявлен статический указатель aSingletonClass *instance_ и статическая функция void deleteInstance( void ).
Я реализовал код 2 без использования статического указателя и статической функции (я думал, что синглтон можно сделать и без него, но я не уверен!!!)
Пожалуйста, сообщите мне, может ли это изменение быть опасным, и в этом случае моя программа может выйти из строя.
Код 1:
class aSingletonClass
{
public:
static aSingletonClass *getInstance( void )
{
if(!instance_)
instance_ = new aSingletonClass;
return instance_;
}
static void deleteInstance()
{
if(instance_)
delete instance_;
instance_ = NULL; //important as this can create dead reference problems
}
private:
static aSingletonClass *instance_;
aSingletonClass() {};
~aSingletonClass() {};
};
int main()
{
aSingletonClass *someVar = NULL;
someVar = aSingletonClass::getInstance();
aSingletonClass::deleteInstance();
return 0;
}
Код 2:
class A
{
int x;
A(int a)
{ x=a; }
~A()
{ }
public:
static A* start()
{
A* ptr1 = new A(3);
return (ptr1);
}
void end()
{
delete this;
}
};
int main()
{
A* ptr=A::start();
ptr->end();
}