Я обычно привык к реализации одноэлементного шаблона таким образом, потому что это так просто:
class MyClass
{
public:
MyClass* GetInstance()
{
static MyClass instance;
return &instance;
}
private:
//Disallow copy construction, copy assignment, and external
//default construction.
};
Это кажется значительно проще, чем создание статического указателя экземпляра, инициализация его в исходном файле ииспользование динамического выделения памяти в функции экземпляра с защитой.
Есть ли обратная сторона, которую я не вижу?Это выглядит поточно-ориентированным для меня, потому что я думаю, что первый поток, который попадет на первую строку, вызовет создание экземпляра - и это выглядит красиво и лаконично.Я полагаю, что должна быть проблема, которую я не вижу, потому что это не часто встречается - я хотел бы получить некоторую обратную связь, прежде чем я продолжу ее использовать