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

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

Войти
Регистрация
Восстановить пароль
 
ASTREL
9 / 9 / 2
Регистрация: 07.12.2010
Сообщений: 53
#1

Глобальные static переменные - C++

18.06.2012, 00:48. Просмотров 1023. Ответов 2
Метки нет (Все метки)

main.h
C++
1
2
3
4
5
6
7
class Test
{
public:
    void test();
};
 
static int x;
test.cpp
C++
1
2
3
4
5
6
#include "main.h"
 
void Test::test()
{
    x = 2;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "main.h"
#include <iostream>
 
using namespace std;
 
void main()
{
    cout<<x<<endl;
    Test t;
    t.test();
    cout<<x<<endl;
}
В данном случае вывод будет 0 0.

-----------------------------------------------
А вот если убрать test.cpp и перенести функцию в main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "main.h"
#include <iostream>
 
using namespace std;
 
void Test::test()
{
    x = 2;
}
 
void main()
{
    cout<<x<<endl;
    Test t;
    t.test();
    cout<<x<<endl;
}
Тогда вывод 0 2 как и ожидалось.

В чем загвоздка? Как получить те же 0 2, если использовать модель разбития кода как в первом примере?

P.S. использую Visual Studio 2010.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2012, 00:48     Глобальные static переменные
Посмотрите здесь:

глобальные static-переменные и разбиение на файлы - C++
Подскажите как связываются файлы при работе со static-переменными? К примеру если я хочу чтобы у меня static переменные были в одном...

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

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

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

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,116
18.06.2012, 01:09     Глобальные static переменные #2
Из-за модификатора static в каждой единице трансляции(читай в .cpp) будет своя переменная x.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
18.06.2012, 09:31     Глобальные static переменные #3
Заменить "static int x;" на "extern int x;" в хэдэре и "int x;" в cpp и всё будет работать как хочется.
Yandex
Объявления
18.06.2012, 09:31     Глобальные static переменные
Ответ Создать тему
Опции темы

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