C ++ singleton vs objeto completamente estático

Digamos que precisamos ter apenas uma instância de alguma classe em nosso projeto. Existem algumas maneiras de fazer isso.

Eu quero comparar Por favor, você pode revisar meu entendimento.

1) Padrão Singleton clássico

2) Classe completamente estática (todos os métodos e membros são estáticos).


Pelo que entendi, as diferenças são as seguintes:

a) A ordem de inicialização dos membros estáticos em diferentes unidades não está definida. Portanto, a inicialização de membros completamente estáticos não pode usar membros / funções estáticos de outros módulos. E singleton não tem esse problema.

b) Temos que lidar com a segmentação para getInstance () de Singleton. No entanto, a classe completamente estática não tem esse problema.

c) O acesso aos métodos parece um pouco diferente. Foo :: bar (); vs Foo :: getInstance () -> bar (); Geralmente, o singleton pode retornar NULL para identificar que houve alguns problemas com a construção do objeto e a classe estática não.

d) A definição de classe parece um pouco desajeitada com muitas estatísticas para a classe estática.

Perdi alguma coisa?

questionAnswers(5)

yourAnswerToTheQuestion