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

C++ и директивы include c пространством имён - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
art3m98run
 Аватар для art3m98run
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
28.06.2012, 13:55     C++ и директивы include c пространством имён #1
Всем привет!
Я только начал изучать C++, в связи с этим появились вопросы:
1. В одной книге я встретил выражение, и оно меня несколько запутало — В пространство имён добавляются переменные объявленные программистом(их идентификаторы и значения)? Или же там находятся обозначения только операторов(cout,cin и т.п.)?
2.Зачем нужны директивы include если операторы уже объявлены в пространстве имён?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:08     C++ и директивы include c пространством имён #2
У тебя каша в голове. Расслабься и заново прочитай книжку.
art3m98run
 Аватар для art3m98run
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
28.06.2012, 14:18  [ТС]     C++ и директивы include c пространством имён #3
Эххх....пожалуй, так и сделаю.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:35     C++ и директивы include c пространством имён #4
Пространство имен задает область видимости имен. "В пространство имён добавляются переменные объявленные программистом(их идентификаторы и значения)?" - это верно. Например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
namespace RSDN
{
int g_j=6;
void f()
{
std::cout << "namespace RSDN\n";
}
 
}
 
using namespace RSDN;
 
int main()
{
 
std::cout << "w\n";
RSDN::f();
std::cout << g_j << "\n";
 
return 0;
}
>>2.Зачем нужны директивы include если операторы уже объявлены в пространстве имён?

Не уверен, но возможно namespace объявлено в инклудах и без них самим пространством нельзя пользоваться, так же как и функциями, переменными и классами объявленными в инклудах.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 14:39     C++ и директивы include c пространством имён #5
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
//... 
using namespace RSDN;
 
int main()
{
std::cout << "w\n";
RSDN::f();
std::cout << g_j << "\n";
}
Прошу прощения, но зачем в main'е указывать используемые пространства, если мы их уже используем?
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:41     C++ и директивы include c пространством имён #6
asidorchenko,
Второй вопрос внимательно прочитай, а то он еще больше запутается.

art3m98run,
Посмотри примеры про пространство имен, а то чет ты как то это не правильно понял.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:58     C++ и директивы include c пространством имён #7
Прошу прощения, но зачем в main'е указывать используемые пространства, если мы их уже используем?
Если в пространствах функции или переменные с одинаковыми именами то указывать пространство будет необходимо. В маленьких проектах и студенческих обычно незаметны проблемы реальных крупных проектов.

В iostream написано _STD_BEGIN то есть содержимое заголовочных файлов обернуто в
C++
1
2
3
namespace std
{
}
так как в yvals.h
C++
1
2
#define _STD_BEGIN  namespace std {
  #define _STD_END      }
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:05     C++ и директивы include c пространством имён #8
Цитата Сообщение от asidorchenko Посмотреть сообщение
Если в пространствах функции или переменные с одинаковыми именами то указывать пространство будет необходимо.
Я знаю это. Но в данном случае идентификаторы в пространствах не пересекаются.
Лишний код, или я заблуждаюсь?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.06.2012, 15:10     C++ и директивы include c пространством имён #9
ЛетающийЕнот, Лишний код в том случае using namespace ... ну как по мне.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:13     C++ и директивы include c пространством имён #10
ForEveR, я как раз о том же
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
28.06.2012, 15:18     C++ и директивы include c пространством имён #11
ЛетающийЕнот, http://www.cyberforum.ru/blogs/34326/blog275.html
посмотри и реши, что лишнее. Как уже заметили выше, в серьезных проектах может происходить конфликт имен.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:29     C++ и директивы include c пространством имён #12
MrGluck,

Не по теме:

каждый выбирает то, что удобнее/безопаснее/правильнее/...


И что целесообразнее, о чём и речь идёт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 15:35     C++ и директивы include c пространством имён
Еще ссылки по теме:

C++ Директивы компилятора
Директивы define C++
Несколько модулей с одним пространством имен C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,410
28.06.2012, 15:35     C++ и директивы include c пространством имён #13
Цитата Сообщение от ЛетающийЕнот Посмотреть сообщение
MrGluck,

Не по теме:

каждый выбирает то, что удобнее/безопаснее/правильнее/...


И что целесообразнее, о чём и речь идёт.
Yandex
Объявления
28.06.2012, 15:35     C++ и директивы include c пространством имён
Ответ Создать тему
Опции темы

Текущее время: 11:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru