|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.07.2010, 09:09 | #1 |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
Как вместо статических локальных переменных использовать переменные объявленные в namespace?
Сабж. Прочитал, что статические локальные переменные использовать не рекомендуется и вместо них нужно использовать переменные объявленные в namespace. Вот только как именно это сделать мне не совсем понятно. Я верно понимаю, что имеется ввиду вместо статических локальных переменных использовать глобальные переменные объявленные в namespace? И еще, хотелось бы узнать: чем плохи статические локальные переменные, и по чему их использование не рекомендуется?
Последний раз редактировалось Oleg_SK; 02.07.2010 в 09:12. |
02.07.2010, 09:20 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.07.2010, 09:36 | #3 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
можеть быть имеются ввиду одинаковые названия переменных? Для этого и создали пространство имен. Вот пример:
Код:
Код:
Код:
какое отношение эти переменные имеют к пространству имен я не понимаю... Последний раз редактировалось NiCola999; 02.07.2010 в 09:49. |
02.07.2010, 10:46 | #4 | |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
Stilet
Сорри, возможно, что я что-то не так понял... Сейчас вообще не могу вспомнить, где я это прочитал. Возможно это связано с книгой Джеса Либерти и Брэдли Джонса "Освой самостоятельно C++ за 21 день"; в ней кстати вообще нет темы по статическим переменным (ни локальным, ни глобальным). Сейчас глянул книгу Герберта Шилдта "Полный справочник по C++" и во 2 главе после описания локальных и глобальных статических переменных нашел следующую информацию: Цитата:
Последний раз редактировалось Stilet; 02.07.2010 в 11:40. |
|
02.07.2010, 11:34 | #5 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Вот те пример:
module.h Код:
Код:
Код:
int var; static int svar; void func() {} static void sfunc() {} Так вот, модификатор extern позволяет добраться до переменных и функций, которые не объявлены в прямой видимости. Модификатор static скрывает объекты полностью (если их конечно не объявить в h файле). В данном примере компилятор не найдёт объявления svar и sfunc, а var и func без проблем. Теперь, почему использование не рекомендуется: в плюсах появились классы, поэтому вообще не рекомендуется использовать функции и глобальные переменные. Поэтому статик в плюсах именно в этом контексте устарел. Поскольку это эквивалентно сокрытию в private. А по поводу неймспейсов. Не понимаю, каким они здесь боком, ведь: module.h: Код:
Код:
Код:
Последний раз редактировалось Carbon; 02.07.2010 в 11:43. |
02.07.2010, 11:44 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.07.2010, 11:45 | #7 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Так я не сказал, что запрещён. Я сказал, что устарел. Если честно, ни разу не видел, чтоб кто-то его так использовал.
|
02.07.2010, 11:52 | #8 | |
Пользователь
Регистрация: 06.06.2010
Сообщений: 42
|
Цитата:
|
|
02.07.2010, 11:59 | #9 | |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Цитата:
Опять повторюсь: не запрещается, а не рекомендуется. Т.е. хорошим тоном считается использовать классы. Ну например: захотел создать свой модуль с кучей глобальных переменных и функций - 10 раз подумай, может лучше в класс объединить? |
|
02.07.2010, 12:37 | #10 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
Вот в C# это хорошо и реализовано, там вообще все на классах реализовано, а С# как известно потомок C++, т.е. так сказать улучшенная версия
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как использовать переменные в ссылках на ячейки | Klamm | Microsoft Office Excel | 6 | 14.04.2012 01:44 |
Title на форме. Как можно перерисовать caption на form? Или убрать его и вместо использовать картинки | Шульц | Общие вопросы Delphi | 37 | 02.10.2010 09:46 |
Что можно использовать вместо динамических массивов. | Evgen1503 | Общие вопросы Delphi | 8 | 14.01.2010 21:54 |
использование конструкции "using <namespace>::<namespace-member>" | happy_horror | Общие вопросы C/C++ | 5 | 08.03.2009 15:30 |
Как правильно использовать переменные в процедурах | nikolai_P | Microsoft Office Excel | 22 | 15.05.2008 13:15 |