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?