Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

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

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

Глобальные статические переменные - C++
Ребят, может мне кто-нибудь объяснить назначение глобальных статических переменных? Литература (в частности Шилдт) говорит о том, что к...

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

Используете ли вы глобальные переменные - C++
Добрый вечер, используете ли вы у себя в коде глобальные переменные между единицами трансляции и/или в конкретной? Моё мнение:...

Динамические глобальные переменные - C++
При изучении С++ возникла проблема - потребовалось изменить два объекта одной функцией. Конечно, можно создать новый объект, являющийся...

Глобальные static переменные - C++
main.h class Test { public: void test(); }; static int x; test.cpp

Глобальные переменные в хедер - C++
имеется data.h, в нем описана переменная int i. далее есть файл source.cpp include "data.h" int main() { i=10; return 0; ...

Глобальные переменные (ошибка) - C++
Разбирался в глобальных переменных, программа выдает ошибку... Что не так? #include <iostream> using namespace std; ...

Убрать глобальные переменные - C++
Помогите пожалуйста убрать глобальные переменные, прога работает на 100% #include <cstring> #include <string> #include <fstream> ...

Глобальные переменные в функции - C++
Подскажите плиз, а можна ли глобальную переменную обявить как то в функции?

Константы, переменные - C++
Отпишите пожалуст с начала до конца что происходит в этой программе =) void main() { //Описание переменных целого типа ...


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

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

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

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

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

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

Цитата Сообщение от akarad Посмотреть сообщение
И что насчет использования глобальных констант? И можно ли их засунуть в отдельный файл?
Можно. Только есть одна тонкость - глобальные константы имеют внутреннее
связывание (C++03, 3.5.3), поэтому для их "расшаривания" в другие cpp-файлы
необходимо добавлять extern к объявлению.
Yandex
Объявления
06.01.2014, 11:58     Оправдано ли использовать глобальные переменные и константы
Ответ Создать тему
Опции темы

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