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

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

07.04.2015, 16:06. Просмотров 385. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2015, 16:06
Ответы с готовыми решениями:

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

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

Глобальные переменные
Здравствуйте! Возникла видимо классическая проблема, но перечитав кучу...

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

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

4
HighPredator
5689 / 2008 / 723
Регистрация: 10.12.2010
Сообщений: 5,774
Записей в блоге: 3
07.04.2015, 16:08 2
Цитата Сообщение от rugga Посмотреть сообщение
др. программы могут случайно поменять значение этих переменных
Это где вы такое вычитали?
0
zss
Модератор
Эксперт С++
7460 / 6836 / 4317
Регистрация: 18.12.2011
Сообщений: 18,086
Завершенные тесты: 1
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
rugga
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
Renji
2123 / 1561 / 476
Регистрация: 05.06.2014
Сообщений: 4,522
07.04.2015, 16:55 5
Цитата Сообщение от rugga Посмотреть сообщение
Я правильно понимаю: "в c++ использовать глобальные переменные не безопасно, т. к. др. программы могут случайно поменять значение этих переменных"?
1) Программы Потоки.
2) Синхронизация спасет отца русской демократии. Хотя, конечно, если юзаете многопоточность, лучше просто избегать разделяемых потоками данных.
Цитата Сообщение от rugga Посмотреть сообщение
А что, одна программа никак не может изменить значение в ОЗУ, которое использует др. программа?
Может, но только после определенных плясок с бубном. Но если программист специально плясал с бубном, видимо, он и хотел чтоб одна программа видела данные другой.
0
07.04.2015, 16:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2015, 16:55

Глобальные переменные
Видел в некоторых проектах создают глобальные переменные 1 вариант: int...

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

Глобальные переменные
Я хочу использовать глобальную переменную, определённую в main, в своих...


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

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

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