是在多个标头中定义的命名空间std
我正在尝试了解 namespace std。我知道命名空间是什么。我想知道,命名空间是否std定义在多个头文件中?
我这里有两个示例代码,它们都可以编译和运行。一种使用#include<string>,另一种使用#include<iostream>。两者都使用“使用命名空间 std”。这告诉我std在两个标题中都定义了,是吗?如果是这样,那么当我在同一代码中使用两个头文件时,编译器如何知道std使用哪个?
代码 1:
#include <string>
using namespace std;
int main()
{
string test;
test = "hello";
return 0;
}
代码 2:
#include <iostream>
using namespace std;
int main()
{
string test;
test = "hello";
return 0;
}
回答
一个命名空间是开放的;也就是说,您可以从几个单独的命名空间声明中向其添加名称。例如:
namespace A {
int f();
}
namespace A {
int g();
}