答案 0 :(得分:1)
命名空间是一种组织我们类型的方法。将所有数学函数保存在MyMath命名空间等中。它也是一种分离类型的方法,这样它们就不会与其他类型冲突。因此,您可以在代码中同时拥有MyTypes :: string和stl :: string。 std名称空间是STL为其内容选择的名称空间。
头文件包含代码的公共接口。它为您提供了它可用的内容,它声明的类型和功能,并希望在评论中记录如何使用它。如果您尝试使用代码而不包含其相应的头文件,则代码将无法编译,因为它无法找到类型。标头可能包含也可能不包含名称空间中的代码。
答案 1 :(得分:1)
如您所知,当您在 b.cpp 中加入#include "a.h"
之类的内容时,啊内的所有内容都会被放置,而不是#include "a.h"
在 b.cpp 。因此,如果 a.h 是200行代码而您的实际代码是10行代码,那么将编译的代码将是大约210行代码。如果您的 a.h 很大或者您多次包含它,编译时间会增加。(请注意,如果a.h
中包含某些内容,请重复此故事。)
我们假设std
库位于一个 .h 文件和std
命名空间内。现在它真的很大,在每个文件中你将使用std
类之一,即使是最小的类,你也必须包含整个类。它使你的程序真的很大,编译真的很慢。
答案 2 :(得分:0)
您需要的代码段。头文件其中标准库实体实际上是声明。由于标准库中包含的实体的大小和多样性,有多个标头。从本质上讲,声明是根据功能分组的。
答案 3 :(得分:-1)
标题和命名空间实际上是无关的;一个与另一个没有任何关系。
因此,人们也不会以任何方式使其他人过时。
请考虑std::string
中可能找到的<string>
声明:
namespace std {
typedef basic_string<char> string;
}
没有&#34;重新声明&#34;因为这两个概念是无关的。