Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 14:00   #1
T@Rak0t
Пользователь
 
Аватар для T@Rak0t
 
Регистрация: 10.03.2010
Сообщений: 17
Вопрос Объявление пространства имен

Доброго времени суток! Сегодня в одной книжице вычитал что в программе можно по разному объявить пространство имен, либо целиком, либо отдельные его функции.
Напрмер

Код:
using namespace std;
а можно объявить только те функции, которые будут использоваться

Код:
using std::cout;
using std::cin;
//и т.п.
так что же лучше ипользовать, и что более правильно. Спасибо
T@Rak0t вне форума Ответить с цитированием
Старый 20.09.2010, 14:31   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

В загаловочных файлах - не делать ни первого, ни второго.
В коде( особенно его много ) тоже не желательно, но для маленьких задачек делайте :
using namespace std;
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 20.09.2010, 14:36   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Оба подхода имеют право на жизнь, оба равнозначны. Второй вариант был добавлен позже. Наверняка для большей гибкости в плане конфликта имён.
Допустим, есть два больших пространства имён А и В. В обоих из них есть класс String.
Подключаем их так:
Код:
using namespace A;
using namespace B;
получаем конфликт по классу String (компилятор не разберётся класс из какого пространства имён имелся ввиду). Придется явно писать А::String и B::String.
Если же из пространства используется всего пара классов, то лучше их подключить явно по второму способу, чтобы избежать текущие конфликты и избежать их в будущем.
В любом случае, обе эти записи ставят под вопрос использование пространств имён, т.к. убивают их суть.
pu4koff вне форума Ответить с цитированием
Старый 20.09.2010, 15:06   #4
T@Rak0t
Пользователь
 
Аватар для T@Rak0t
 
Регистрация: 10.03.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Оба подхода имеют право на жизнь, оба равнозначны. Второй вариант был добавлен позже. Наверняка для большей гибкости в плане конфликта имён.
Допустим, есть два больших пространства имён А и В. В обоих из них есть класс String.
Подключаем их так:
Код:
using namespace A;
using namespace B;
получаем конфликт по классу String (компилятор не разберётся класс из какого пространства имён имелся ввиду). Придется явно писать А::String и B::String.
Если же из пространства используется всего пара классов, то лучше их подключить явно по второму способу, чтобы избежать текущие конфликты и избежать их в будущем.
В любом случае, обе эти записи ставят под вопрос использование пространств имён, т.к. убивают их суть.
спасибо, а где можно по подробнее почитать про пространство имен и его использовании?
T@Rak0t вне форума Ответить с цитированием
Старый 20.09.2010, 15:16   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от T@Rak0t Посмотреть сообщение
спасибо, а где можно по подробнее почитать про пространство имен и его использовании?
Да там особо читать нечего. Так или иначе во многих книгах этот вопрос освещается.
Используются пространства для исключения конфликтов имён классов, переменных,...
А то решаем мы какую-нибудь задачу, для этого нашли 2 библиотеки, подключили их. А компилятор то нам и говорит, что в обоих этих библиотеках есть класс Core. И как быть? А для этого есть пространства и разработчики библиотек обычно все свои классы помещает в своё пространство. Остаётся в коде явно указывать класс из какого пространства нужен.
pu4koff вне форума Ответить с цитированием
Старый 21.09.2010, 09:58   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Можете почитать Страуструпа. "Язык программирования C++. Специальное издание" - 8 глава.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесконечность пространства. Levsha100 Свободное общение 96 14.12.2012 00:15
Реализация игрового пространства pyhpyh Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 23.08.2010 18:29
проблема с подключением пространства имен whiskaz Помощь студентам 2 24.03.2010 22:40
Правила пространства имён Delphi Retainer Обсуждение статей 8 07.10.2009 17:36