【发布时间】:2021-10-12 03:45:41
【问题描述】:
我正在尝试理解命名空间std。我知道命名空间是什么。我想知道,命名空间std是否定义在多个头文件中?
我在这里有两个示例代码,它们都可以正常编译和运行。一种使用#include<string>,另一种使用#include<iostream>。两者都使用“使用命名空间标准”。这告诉我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;
}
【问题讨论】:
-
如果什么都不包含怎么办?
-
如果在
std命名空间中定义了类似namespace std { struct something; }的东西,那么它的完整 名称就是std::something。所以在多个标题中使用namespace std {}并没有什么坏处,只是定义的所有内容都将具有相同的前缀std:: -
不同的标题将不同的东西放入
namespace std。
标签: c++