С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
akarad
1 / 1 / 0
Регистрация: 06.01.2014
Сообщений: 6
#1

Оправдано ли использовать глобальные переменные и константы - C++

06.01.2014, 02:49. Просмотров 484. Ответов 4
Метки нет (Все метки)

Здравствуйте, я бы хотел узнать немного об использовании глобальных переменных и констант.
Немало слышал и читал о том, что глобальные переменные использовать крайне не рекомендуется. Но как тогда быть, если функция должна работать с большим количеством значений и при этом почти все значения могут меняться в ней? Тогда список аргументов получается просто огромным. И что если таких функция должно быть несколько?
У меня возникла небольшая мысль, а что если все глобальные переменные засунуть в отдельный файл? Не знаю решит ли это проблему и как это вообще сделать, но не будет ли это тем же, что использовать глобальные переменные в main.cpp?
И что насчет использования глобальных констант? И можно ли их засунуть в отдельный файл?
Буду благодарен за ответы (желательно с хоть элементарным пояснением почему так, а не иначе).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 02:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оправдано ли использовать глобальные переменные и константы (C++):

Глобальные переменные и константы - C++
Есть проект, большой, с кучей классов и т.д. нужны глобальные переменные, и константы, доступ к которым должны иметь многие классы. Но они...

Глобальные и статические глобальные переменные - C++
Скажите, чем отличаются глобальные переменные от статических глобальных переменных?

Глобальные переменные - C++
Доброго времени суток всем. У меня следующая проблема: объявляю глобально переменную типа структуры dealer* root;. Далее в коде...

Глобальные переменные - C++
Подскажите пожалуйста, почему данные в глобальной переменной перезаписываются, а не плюсуются? Пример: int peremennaya; void...

Глобальные переменные - C++
Здравствуйте . Разбираю пример с книги на использование глобальных переменных . Там был такой пример: #include "stdafx.h" #include...

Глобальные переменные - C++
Я правильно понимаю: "в c++ использовать глобальные переменные не безопасно, т. к. др. программы могут случайно поменять значение этих...

4
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 728
06.01.2014, 03:04 #2
ну не знаю, глобальные переменные используются крайне редко.
Если говорить об функции, то ей можно передать какой либо параметр.
Глобальные переменные/константы можно засунуть в отдельный файл, например в заголовочные файлы.
1
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
06.01.2014, 03:25 #3
akarad, в дополнение прочтите http://en.cppreference.com/w/cpp/language/constexpr , это можно сказать расширение нового стандарта.
1
__General__
24 / 24 / 3
Регистрация: 04.01.2014
Сообщений: 91
Завершенные тесты: 2
06.01.2014, 06:01 #4
akarad, Засовывать глобальные переменные в отдельный файл смысла я не вижу,
но вот если объявить глобальную переменную как static (static int a), то "жить" она будет только в том файле ,в котором была объявлена - это хоть безопаснее. Хотя да, лучше глобальные переменные вообще не использовать.

А вот глобальные константы юзать вполне себе безопасно

Добавлено через 5 минут
Ведь с глобальными переменными опасно иметь дело потому, что вы можете случайно изменить их значения в какой-нибудь функции, что приведет к неправильной работе программы;
а константу в принципе не изменишь.
1
Убежденный
Ушел с форума
Эксперт С++
15708 / 7219 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
06.01.2014, 11:58 #5
Цитата Сообщение от akarad Посмотреть сообщение
Немало слышал и читал о том, что глобальные переменные использовать крайне не рекомендуется.
Да. Код с глобальными переменными труднее поддерживать, он подвержен ошибкам.

Цитата Сообщение от akarad Посмотреть сообщение
Но как тогда быть, если функция должна работать с большим количеством значений и при этом почти все значения могут меняться в ней? Тогда список аргументов получается просто огромным. И что если таких функция должно быть несколько?
Можно запихнуть значения в структуру и передать ее адрес, как аргумент.
Но вообще, функция с большим количеством аргументов - это само по себе подозрительно.

Цитата Сообщение от akarad Посмотреть сообщение
У меня возникла небольшая мысль, а что если все глобальные переменные засунуть в отдельный файл? Не знаю решит ли это проблему и как это вообще сделать, но не будет ли это тем же, что использовать глобальные переменные в main.cpp?
Скажем так, это немного сгладит проблему, но не решит ее.
Конечно, приятнее работать с глобальными переменными централизовано, а не
бегать за ними по сотне файлов. Кстати, глобальные переменные можно делать
static или помещать в анонимные пространства имен, тогда они будут видны
только в пределах файла.

Цитата Сообщение от akarad Посмотреть сообщение
И что насчет использования глобальных констант? И можно ли их засунуть в отдельный файл?
Можно. Только есть одна тонкость - глобальные константы имеют внутреннее
связывание (C++03, 3.5.3), поэтому для их "расшаривания" в другие cpp-файлы
необходимо добавлять extern к объявлению.
2
06.01.2014, 11:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 11:58
Привет! Вот еще темы с ответами:

Глобальные переменные - C++
Я хочу использовать глобальную переменную, определённую в main, в своих классах. Листинг)) globals.h #ifndef GLOBASL_H #define...

глобальные переменные - C++
Пробовал объявить глобальные переменные следующим образом: в заголовочном файле head.h #ifndef DF_H #define DF_H //объявления...

глобальные переменные - C++
здравствуйте, я только начал изучать C++, в книге Штидта Г. есть такой код, он выводит: count + число, помогите понять принцип работы этого...

Глобальные переменные - C++
Здравствуйте! Возникла видимо классическая проблема, но перечитав кучу сайтов так ее и не решил. Пишу в VS2005, имеются 2 срр файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.