2012-03-07 67 views
2

今天我看到了C++命名空间,我遇到了一个问题。 编译器用命名空间做什么? 例如: 我们写如何定义命名空间以及编译器如何处理命名空间?

#include<iostream> 
using namespace std; 

那么问题就来了,什么是iostream文件和namespace std之间的关系? std在哪个文件中定义?当我使用#include <iostream.h>时,我知道编译器会将来自iostream.h的声明(如“cout”,“cin”.etc)带到我的cpp文件中。

你能给点建议吗?先谢谢你。

+0

Upvote和/接受相关答案 – 2012-03-07 08:52:43

回答

0

<iostream>包含从namespacestd项目。您可以将名称空间视为一组方法,类定义和变量。使用名称空间可以更轻松地按功能分组。

using指令只是在全局名称空间中导入名称空间的所有内容。但你不必使用它:

您可以使用:

using namespace std; 
cout << "whatever"; 

​​

这样做的原因是,编译器不知道什么cout是外命名空间。所申报

它这样想:

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

//file <vector> 
namespace std 
{ 
    //declaration of vector 
} 
+0

你说的cout在std中定义,但是什么是#include 的用法? – good90 2012-03-07 08:30:25

+0

@ good90这是包含定义的文件。 – 2012-03-07 08:31:59

+0

我知道,你meam每个文件像iotream字符串向量都定义了一个std命名空间,是吗? – good90 2012-03-07 08:36:18

0

的情况就像是你寻找的东西图书馆。 iostream是该书并且std是页面并且cout是该行或段落。

注:同一个页面可以在多个图书

存在阅读namespaces here

+1

嗯...不是真的......除非同一页面可以存在于多本书中。 – 2012-03-07 08:46:08

+0

哦,好吧,现在我即使我错了? – 2012-03-07 08:47:17

+1

那么,事情是'std'不仅在'iostream'中,而且在'vector'和'list'和'map'等等。 – 2012-03-07 08:48:26