Зависит от характера ресурсов.Обычно лучшая практика - это , а не , чтобы уничтожить синглтон;разрушение синглтона может привести к порядку проблем деструктора.Исключение составляют случаи, когда синглтон использует ресурсы, которые не будут освобождены системой (например, временные файлы);в этом случае «классической» реализацией функции instance()
является:
Singleton& Singleton::instance()
{
static Singleton theOneAndOnly;
return theOneAndOnly;
}
В этом случае деструктор theOneAndOnly
будет вызываться во время выключения.По этой причине вы должны убедиться, что синглтон никогда не используется в деструкторе статической переменной.
Кстати, ваша реализация также нарушена.Это должно быть:
Singleton& Singleton::instance()
{
static Singleton* theOneAndOnly = new Singleton;
return *theOneAndOnly;
}
Это обычное решение.