是在多个标头中定义的命名空间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();
}


以上是是在多个标头中定义的命名空间std的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>