Как определить пространство имен и как компилятор имеет дело с пространством имен? - PullRequest
2 голосов
/ 07 марта 2012

сегодня я видел пространство имен C ++, у меня проблема.что компилятор делает с пространством имен?например: мы пишем

#include<iostream>
using namespace std;

, а затем возникает вопрос, какова связь между файлом iostream и namespace std?и где std определяется , в каком файле?когда я использую #include <iostream.h>, я знаю, что компилятор выведет объявление из iostream.h как "cout", "cin" .etc в мой файл cpp.

Вы можете дать какое-нибудь предложение?заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 07 марта 2012

прочитайте это, это объясняет про пространства имен http://www.cplusplus.com/doc/tutorial/namespaces/

0 голосов
/ 07 марта 2012

ситуация похожа на то, что вы ищете что-то в библиотеке.iostream - это книга, std - это страница, а cout - это строка или абзац.

Примечание: одна и та же страница может существовать в нескольких книгах

читать о пространствах имен здесь .

0 голосов
/ 07 марта 2012

<iostream> содержит элементы из namespace std. Вы можете рассматривать пространство имен как группу методов, определений классов и переменных. Использование пространств имен облегчает их группирование по функциональности.

Директива using просто импортирует все содержимое пространства имен в глобальном пространстве имен. Но вам не нужно его использовать:

Вы можете использовать:

using namespace std;
cout << "whatever";

или

std::cout << "whatever";

Причина этого в том, что компилятор не знает, что cout находится вне пространства имен.

Думайте об этом как объявлено как:

//file <iostream>
namespace std
{
    //declaration of cout
}

//file <vector>
namespace std
{
    //declaration of vector
}
...