如何定义命名空间以及编译器如何处理命名空间?

时间:2012-03-07 08:10:21

标签: c++ compiler-construction namespaces

今天我看到了C ++命名空间,我遇到了问题。 编译器对命名空间做了什么? 例如: 我们写

#include<iostream>
using namespace std;

然后问题来了,iostream文件和namespace std之间的关系是什么? {(1}}在哪个文件中定义了什么?当我使用std时,我知道编译器会将来自iostream.h的声明从“cout”,“cin”.etc带到我的cpp文件。

你可以提一些建议吗?提前谢谢你。

3 个答案:

答案 0 :(得分:3)

阅读本文,它解释了名称空间 http://www.cplusplus.com/doc/tutorial/namespaces/

答案 1 :(得分:0)

<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
}

答案 2 :(得分:0)

情况就像你在图书馆里寻找东西一样。 iostream是书,std是页面,cout是行或段落。

注意:同一页面可以存在于多本书中

了解namespaces here