Глобальные переменные в современном C ++
Каковы (объективные) недостатки создания класса, в котором все члены (атрибуты, функции) являются статическими? В частности, по сравнению с использованием пространства имен? Или вы предпочитаете создавать глобальные переменные / функции?
Мне нравится создавать статические атрибуты, потому что я нахожу их «аккуратнее». (Я точно знаю, откуда они берутся и т. Д.) Я не очень знаком с пространствами имен. И мне совсем не комфортно с глобальными переменными, потому что я не очень знаком с такими ключевыми словами C, какextern
а такжеstatic
.
Далее, если мы рассмотрим класс
class MyStaticClass
{
private:
static int x;
static double y;
public:
static float s;
static double weatherForecast(unsigned int, char);
};
и пространство имен
namespace MyNamespace
{
int x;
double y;
float s;
double weatherForecast(unsigned int, char);
}
Есть ли различия (с точки зрения производительности) между звонкамиMyStaticClass::weatherForecast
и звонитMyNamespace::weatherForecast
?
Есть ли различия (с точки зрения производительности) между чтением / письмомMyStaticClass::s
и чтение / записьMyNamespace::s
?
Изменится ли какой-либо из ответов на вышеуказанные вопросы, если вместо основных типов будут использоваться классы?