|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2010, 01:47 | #1 |
Форумчанин
Регистрация: 13.12.2010
Сообщений: 220
|
Зачем нужен static
Объясните зачем нужно объявлять перменные за типом статик, что это даёт я так и не понял. Почему объявлять нужно в классе, а потом ещё и за классом?
Код:
|
20.12.2010, 02:17 | #2 |
Форумчанин
Регистрация: 13.12.2010
Сообщений: 220
|
Код:
1) Получается я не создаю никакого объекта, а просто обращаюсь к переменной класса и даже не к свойству класса, а к переменной? 2)Мне не нужно создавать несколько объектов, а только через область видимости обращаться к переменной класса, но не к объекту? 3)Является ли оправданным объявление функций или переменных внутри класса за типом статик ведь если объявить статик за типом инт он будет занимать 4 байта который содержит инт на всё время запуска программы, объём программы этим увеличивается? Последний раз редактировалось Kasper1; 20.12.2010 в 02:21. |
20.12.2010, 02:51 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
статическая переменная класса это переменная общая для всех экземпляров этого класса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.12.2010, 15:55 | #4 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Ну и еще маленький примерчик static.
Код:
Последний раз редактировалось coNsept; 20.12.2010 в 16:03. |
20.12.2010, 17:34 | #5 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
для сокрытия глобальной функции, определенной в единице трансляции. из других единиц доступ не получить. сохранилось из сей. но в плюсах чаще используется неименованное пространство имен
Код:
все ок. foo видна в main-e. но Код:
тож самое и с переменными Код:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 20.12.2010 в 17:51. |
21.12.2010, 01:53 | #6 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
static это не тип - это ключевое слово. В случае с переменными - членами класса оно нужно для того, чтобы память под переменную была выделена не в самом объекте а в постоянной памяти программы - полная аналогия глобальных переменных, единственное что обращатся в коде надо по другому к ним.
Зачем нужно? Та же глобальная переменная но логически (для программиста) привязанная к определенному классу. На самом деле та же самомя глобальная переменная. Зачем 2 раза писать? 1ый раз ты ее объявляешь - второй раз определяешь. Память под переменную выделяется при определении. 1) Обращаешся к обыкновенной глобальной переменной которая замаскирована под переменную класса. То есть на 100 объектов твоего класса эта переменная существует только одна. 2) Да обращаешся через ИмяКласса::имяСтатическойПеременной , но можно и через имяОбъекта.имяСтатическойПеременной , для использования статических переменных созданные объекты необязательны 3) Является ли оправданным использование глобальных переменных? Если ты беспокоишся по поводу того что даже при отсутсвии созданных объектов класса память все равно выделена для статических членов - это просто ерунда по сравнению с тем объемом памяти который есть у компутеров) Если ты хранишь статическую инт в 4 байта от этого ни тепло ни холодно. Когда хранишь массивчик в 20 Мб то разговор другой конечно, но можно сделать статический указатель на этот массивчик а память выделять только при создании первого объекта класса к примеру. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Зачем нужен Unit? | alex198555 | Общие вопросы Delphi | 3 | 20.08.2010 01:10 |
Perl, DBIx::Class. Зачем нужен bind ? | ssdm | Perl | 0 | 06.08.2010 18:31 |
.NET, зачем он нужен? | Qousio | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 80 | 18.12.2009 23:42 |
Зачем нужен finally? | ds.Dante | Общие вопросы .NET | 9 | 15.09.2009 12:09 |
Зачем нужен void? | Сергей089 | Общие вопросы C/C++ | 7 | 23.03.2009 17:08 |