Variáveis globais em C ++ moderno

Quais são as desvantagens (objetivas) de criar uma classe na qual todos os membros (atributos, funções) são estáticos? Em particular, em comparação com o uso de um espaço para nome? Ou você prefere criar variáveis / funções globais?

Gosto de criar atributos estáticos porque os acho "mais organizados". (Eu sei exatamente de onde eles vêm, etc.) Eu não estou muito familiarizado com espaços para nome. E não me sinto à vontade com variáveis globais, porque não estou muito familiarizado com palavras-chave C, comoextern estatic.

Além disso, se considerarmos a classe

class MyStaticClass
{
    private:

        static int x;
        static double y;

    public:

        static float s;
        static double weatherForecast(unsigned int, char);
};

e o espaço para nome

namespace MyNamespace
{
    int x;
    double y;
    float s;
    double weatherForecast(unsigned int, char);
}

Existem diferenças (em termos de desempenho) entre chamarMyStaticClass::weatherForecast e chamandoMyNamespace::weatherForecast?

Existem diferenças (em termos de desempenho) entre leitura / escritaMyStaticClass::s e leitura / escritaMyNamespace::s?

Alguma das respostas às perguntas acima mudaria se classes fossem usadas em vez de tipos primários?

questionAnswers(1)

yourAnswerToTheQuestion