2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 C++ глобальные переменные
Сообщение08.12.2012, 18:08 


11/06/12
20
Итак, довольно часто на разных форумах и умных порталах проскакивает мысль, что глобальные переменные - зло. Сам недавно прочитал о том насколько проблематична оптимизация кода с глобальными переменными для компилятора, вследствие чего решил убрать их из своего кода, только вот не знаю на что из заменить(нужна структура данных, которую можно динамически изменять). Что посоветуете? Или страхи не оправданны?

 Профиль  
                  
 
 Re: C++ глобальные переменные
Сообщение08.12.2012, 19:38 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Почитайте про pattern Singleton.

 Профиль  
                  
 
 Re: C++ глобальные переменные
Сообщение08.12.2012, 21:27 


11/06/12
20
Munin в сообщении #655917 писал(а):
Почитайте про pattern Singleton.

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

 Профиль  
                  
 
 Re: C++ глобальные переменные
Сообщение10.12.2012, 00:23 
Заслуженный участник


09/09/10
3729
Чем синглтон отличается от глобальной переменной? Ну вот так, глобально (ха-ха)? Да ничем. Да, так вот: если вашему методу нужны какие-то данные — передайте их параметром. Если они большие — заведите структуру и передавайте ссылку на нее. Если вместо структуры сделать класс, то с помощью const можно будет тонко подстраивать изменяемость данных...

 Профиль  
                  
 
 Re: C++ глобальные переменные
Сообщение11.12.2012, 01:32 


10/04/12
704
Основная проблема, наверное, таки все-таки многопоточность. А решение состоит в том, чтобы создать класс, поместить туда все глобальные переменные, создавать при необходимости. Удалять, когда нет необходимости. А пробрасывать указатель на класс в функции, или вообще сделать функции методами класса.

 Профиль  
                  
 
 Re: C++ глобальные переменные
Сообщение11.12.2012, 23:47 
Заслуженный участник


09/09/10
3729
mustitz в сообщении #656858 писал(а):
А решение состоит в том, чтобы создать класс, поместить туда все глобальные переменные, создавать при необходимости. Удалять, когда нет необходимости.

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group