Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.02.2014
Сообщений: 75
1

Глобальные переменные

07.04.2015, 16:06. Показов 533. Ответов 4
Метки нет (Все метки)

Я правильно понимаю: "в c++ использовать глобальные переменные не безопасно, т. к. др. программы могут случайно поменять значение этих переменных"?
Если обернуть глобальные переменный в класс (с private) - это будет безопасно? Например так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
class source {
  private:
     static int a;
     static int b;
   public:
     static int getSymm(int a, int b) {
        return a+b;
     }
}
int main() {
   int x = source::getSymm(5, 3);
}
Как еще можно обезопасить глобальные переменные?
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2015, 16:06
Ответы с готовыми решениями:

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

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

Глобальные переменные
Как в C++ завести глобальную (общую для функции и самой программы) переменную?

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

4
6006 / 2127 / 742
Регистрация: 10.12.2010
Сообщений: 5,965
Записей в блоге: 3
07.04.2015, 16:08 2
Цитата Сообщение от rugga Посмотреть сообщение
др. программы могут случайно поменять значение этих переменных
Это где вы такое вычитали?
0
Модератор
Эксперт С++
10528 / 8751 / 5292
Регистрация: 18.12.2011
Сообщений: 23,408
07.04.2015, 16:11 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace source 
{
     int a;
     int b;
     int getSymm(int x, int y) 
     {
        return x+y;
     }
}
int main() 
{
   source::a=0;
   source::b=source::a+5;
   int x = source::getSymm(5, 3);
}
0
0 / 0 / 0
Регистрация: 10.02.2014
Сообщений: 75
07.04.2015, 16:37  [ТС] 4
Это где вы такое вычитали?
Когда читал про указатели и адреса памяти.

int b = 9;
int* a;

Точно не помню, но было написано типа такого:
Если писать так:
a = 99; // т. е. в переменную указатель вручную прописываем адрес ячейки ОЗУ
*a = 7; //здесь меняем значение, которое хранится в адресе 99
То рискуем изменить значение переменной, которую возможно использует др. программа.

И там написано было, типа так никогда не делайте, нужно так:
a = &b; //берем адрес ячейки, которую использует наша програмка

А что, одна программа никак не может изменить значение в ОЗУ, которое использует др. программа?
0
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,468
07.04.2015, 16:55 5
Цитата Сообщение от rugga Посмотреть сообщение
Я правильно понимаю: "в c++ использовать глобальные переменные не безопасно, т. к. др. программы могут случайно поменять значение этих переменных"?
1) Программы Потоки.
2) Синхронизация спасет отца русской демократии. Хотя, конечно, если юзаете многопоточность, лучше просто избегать разделяемых потоками данных.
Цитата Сообщение от rugga Посмотреть сообщение
А что, одна программа никак не может изменить значение в ОЗУ, которое использует др. программа?
Может, но только после определенных плясок с бубном. Но если программист специально плясал с бубном, видимо, он и хотел чтоб одна программа видела данные другой.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2015, 16:55

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

Глобальные переменные
Здравствуйте, только начал изучать глобальные переменные/разбитие на функции и решил по...

Глобальные переменные
Здравствуйте . Разбираю пример с книги на использование глобальных переменных . Там был такой...

Глобальные переменные
Объясните пожалуйста как правильно заводить глобальную переменную: static int k; или int k; в...

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


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

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

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