Ответы:
Переменная имеет отношение только к самому классу (как типу)
Она общая для всех экземпляров данного класса . . .
это как в дельфе const param=x
или, вне класса, переменная с областью видимости уровня приложения (существует, в отличие от автоматической все время работы программы)
Небольшой пример:
for(int i = 0; i<10; i++){
static int j;
j++;
cout<<j<<' ';
}
Мы объявили статическую переменную j. Если убрать слово static, то j бы заного инициализировалась при каждой новой итерации (кстати, попробуй это сделать - увидишь что получится :) ).. А статическая переменная инициализируется всего лишь единожды (в определенном участке памяти).
В классах - это что-то типа глобальной переменной. Она (переменная) принадлежит всему классу, а не отдельным его объектам.
например
re: static int c; // а это статическая переменная. Она принадлежит классу целиком, однако "из вне" эту переменную нельзя изменить
Можно сказать: статическая переменная - это глобальная, но с ограничениями области видимости.
все просто -- это тоже, что и глобальная, но "прикреплена" к конкретному классу -- со всеми вытекающими последствиями -- например: нужно
особенно нежелательно (неприемлимо) использование ввиду неопределенности порядка пребора исходных (cpp) файлов.
ой... я думал вопрос про статическую переменную класса (=
agronom, да? :)
Просто, когда я проверял свое утверждение, то делал так.
someclass ex;
ex.c = 1;
При этом компилятор ругался. Спасибо, буду знать :)
а, это вы наверно струсатрупа взяли.
Если переменная объявлена как static,то компилятор выделяет ей как и глобальной переменной постоянное место в памяти.Значение этой переменной сохраняется между вызовами блоков программы,в которых она объявлена(нестатические локальные переменные между вызовами ф-ций уничтожаются).
Отличие от глобальной в том,что она доступна только в своём блоке кода(ф-ции или файле).
Прменяется,например,при вызовах COLLBACK ф-ций ,которые вызываются при поступлении в приложение сообщений.При этом значения переменных объявленных static,сохраняются.Все другие переменные необходимо заново инициализировать.
Если объявить переменную-член класса как статическую,то компилятор создаст для всех объектов один щбщий экземпляр этой пере менной.Эта переменная не будет копироваться для всх объектов данного класса,как это происходит для нестатических членов.
16 лет назад