he conseguido suele utilizar para la implementación de un patrón singleton de esta manera porque es muy fácil:¿Hay algún problema con esta implementación de singleton?
class MyClass
{
public:
MyClass* GetInstance()
{
static MyClass instance;
return &instance;
}
private:
//Disallow copy construction, copy assignment, and external
//default construction.
};
Esto parece significativamente más fácil que crear un puntero instancia estática, la inicialización en el archivo de origen, y el uso de memoria dinámica asignación en la función de instancia con guardias.
¿Hay algún inconveniente que no veo? Me parece seguro para subprocesos porque creo que el primer subproceso para llegar a la primera línea provocaría la creación de instancias, y parece agradable y conciso. Me imagino que tiene que haber un problema que no estoy viendo ya que esto no es común - me gustaría obtener algunos comentarios antes de seguir usándolo
Podrías devolver un MyClass & en lugar de un MyClass * –
¿Quieres decir, aparte del hecho de que es un singleton? http: // stackoverflow.com/q/137975/10077 –
Sí, sí, sé que son un antipatrón (patrón) y deben evitarse :) Todavía estoy interesado en por qué esto puede no ser seguro para subprocesos. Sé que modificar los datos del singleton: los miembros deberían estar protegidos por mutex, pero pensé que su creación a través de esta función sería segura. –