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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
art3m98run
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
#1

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

28.06.2012, 13:55. Просмотров 1432. Ответов 12
Метки нет (Все метки)

Всем привет!
Я только начал изучать C++, в связи с этим появились вопросы:
1. В одной книге я встретил выражение, и оно меня несколько запутало — В пространство имён добавляются переменные объявленные программистом(их идентификаторы и значения)? Или же там находятся обозначения только операторов(cout,cin и т.п.)?
2.Зачем нужны директивы include если операторы уже объявлены в пространстве имён?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 13:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ и директивы include c пространством имён (C++):

Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах. - C++
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, разобраться в такой ситуации: есть несколько функций, каждая из которых...

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h> - C++
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого города на 5% (Количество жителей всегда...

#include<iostream>// подключение библиотек #include <conio.h> #include <climits> - C++
помогите для этой программы сделать блок-схему. Пожалуйста #include&lt;iostream&gt;// подключение библиотек #include &lt;conio.h&gt; #include...

Директивы препроцессора Составить программу, использующую директивы препроцессора - C++
1) Задать константы M1,M2,...,M5 и вычислить M1+ 2M2 + 3M3 + 4M4 + 5M5 2) С помощью директив #if, #else, #elif осуществлять выбор строк...

Чем отличается #include <cstring>, #include <string> и #include <string.h>? - C++
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда подключаю #include &lt;string&gt; все что мне...

ошибка в лабе не находит #include<iomanip.h> #include<conio.h> - C++
Само задание: Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в месяц-C руб. а разговоры сверх...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:08 #2
У тебя каша в голове. Расслабься и заново прочитай книжку.
art3m98run
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 9
28.06.2012, 14:18  [ТС] #3
Эххх....пожалуй, так и сделаю.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:35 #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 #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
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
28.06.2012, 14:41 #6
asidorchenko,
Второй вопрос внимательно прочитай, а то он еще больше запутается.

art3m98run,
Посмотри примеры про пространство имен, а то чет ты как то это не правильно понял.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 14:58 #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 #8
Цитата Сообщение от asidorchenko Посмотреть сообщение
Если в пространствах функции или переменные с одинаковыми именами то указывать пространство будет необходимо.
Я знаю это. Но в данном случае идентификаторы в пространствах не пересекаются.
Лишний код, или я заблуждаюсь?
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.06.2012, 15:10 #9
ЛетающийЕнот, Лишний код в том случае using namespace ... ну как по мне.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:13 #10
ForEveR, я как раз о том же
MrGluck
Модератор
Эксперт CЭксперт С++
7211 / 4377 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
28.06.2012, 15:18 #11
ЛетающийЕнот, http://www.cyberforum.ru/blogs/34326/blog275.html
посмотри и реши, что лишнее. Как уже заметили выше, в серьезных проектах может происходить конфликт имен.
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
28.06.2012, 15:29 #12
MrGluck,

Не по теме:

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


И что целесообразнее, о чём и речь идёт.
MrGluck
Модератор
Эксперт CЭксперт С++
7211 / 4377 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
28.06.2012, 15:35 #13
Цитата Сообщение от ЛетающийЕнот Посмотреть сообщение
MrGluck,

Не по теме:

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


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

Несколько модулей с одним пространством имен - C++
Хочу сделать несколько модулей ,с разными пространствами имен .Но ,чтобы при этом они бы ли в одном более общем пространстве имен ...

Какая разница между #include<> и #include""? - C++
Позволите спросить несколько вопросов: 1)Какая разница между #include&lt;&gt; и #include&quot;&quot; 2)Если нужно значение объекта и я не собираюсь его...

Как убрать столкновение Объектов на плоскости с пустым пространством? - C++
Код определяет столкновение по х и y. if ((obj1.x + obj1.width &gt;= obj2.x) &amp;&amp; (obj1.x &lt;= obj2.x + obj2.width)) XColl = true; if...

Директивы препроцессора - C++
Помогите разобраться. Я не могу понять как работают директивы препроцессора. Где находится файл описания, файл реализации, нужно ли...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.06.2012, 15:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru