thread safe examples example best c++ reference singleton pointers

c++ - safe - singleton examples



C++ singleton GetInstance() return (4)

Creo que sería más seguro devolver una referencia, pero no te olvides de la "protección contra copia" de tu objeto singleton.

Al implementar un singleton en C ++, ¿es mejor para GetInstance () devolver un puntero al objeto singleton, o una referencia? ¿Realmente importa?


Prefiero una referencia. Utilizo referencia en lugar de un puntero cada vez que deseo documentar eso:

  • No puede ser nulo
  • No se cambiará (para señalar a otra cosa)
  • No debe ser eliminado

No importa, aparte de devolver una referencia, garantiza implícitamente que existe el singleton. (Si no lo hace, debe lanzar una excepción).

Esto también ignora el consejo de que los singletons son malvados tanto como los globales son malos ya que los singletons son básicamente globales en la ropa de diseño.


El método getInstance () devuelve una referencia ya que el objeto static de la función se inicializa cuando el flujo de control está pasando su definición por primera vez. También trabajar con una referencia es mejor: ahora el usuario no puede eliminar el puntero del singleton. ¡Además, esta implementación es tan simple!

class CKeyboard { public: static CKeyboard& GetInstance() { static CKeyboard keyboard; return keyboard; } private: CKeyboard() {} CKeyboard(const CKeyboard&); CKeyboard& operator=(const CKeyboard&); };

http://www.devartplus.com/3-simple-ways-to-create-singleton-in-c/