2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 C++ глобальные переменные
Сообщение08.12.2012, 18:08 
Итак, довольно часто на разных форумах и умных порталах проскакивает мысль, что глобальные переменные - зло. Сам недавно прочитал о том насколько проблематична оптимизация кода с глобальными переменными для компилятора, вследствие чего решил убрать их из своего кода, только вот не знаю на что из заменить(нужна структура данных, которую можно динамически изменять). Что посоветуете? Или страхи не оправданны?

 
 
 
 Re: C++ глобальные переменные
Сообщение08.12.2012, 19:38 
Аватара пользователя
Почитайте про pattern Singleton.

 
 
 
 Re: C++ глобальные переменные
Сообщение08.12.2012, 21:27 
Munin в сообщении #655917 писал(а):
Почитайте про pattern Singleton.

да, это именно то что надо

 
 
 
 Re: C++ глобальные переменные
Сообщение10.12.2012, 00:23 
Чем синглтон отличается от глобальной переменной? Ну вот так, глобально (ха-ха)? Да ничем. Да, так вот: если вашему методу нужны какие-то данные — передайте их параметром. Если они большие — заведите структуру и передавайте ссылку на нее. Если вместо структуры сделать класс, то с помощью const можно будет тонко подстраивать изменяемость данных...

 
 
 
 Re: C++ глобальные переменные
Сообщение11.12.2012, 01:32 
Основная проблема, наверное, таки все-таки многопоточность. А решение состоит в том, чтобы создать класс, поместить туда все глобальные переменные, создавать при необходимости. Удалять, когда нет необходимости. А пробрасывать указатель на класс в функции, или вообще сделать функции методами класса.

 
 
 
 Re: C++ глобальные переменные
Сообщение11.12.2012, 23:47 
mustitz в сообщении #656858 писал(а):
А решение состоит в том, чтобы создать класс, поместить туда все глобальные переменные, создавать при необходимости. Удалять, когда нет необходимости.

Да решением почти всегда является фабрика: которой ты говоришь getSomething/releaseSomething, а она внутри себя уже думает, как это сделать.

mustitz в сообщении #656858 писал(а):
или вообще сделать функции методами класса.

Тут есть свои подводные камни, которые возникают сильно более потом.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group