如果导入了iostream,为什么要使用名称空间 我是C++初学者,我最近被引入到像STD这样的命名空间中,但是,如果在IoSoad头文件中定义了像CUT和EnDL这样的函数,为什么要包括STD命名空间呢?或者这些函数实际上是在std名称空间中定义的?如果是这样,那么为什么要包含iostream文件呢 < P>一个C++文件可以在其中有一个命名空间,不同的C++文件可以在它们里面有相同的命名空间。 // Header1.h namespace SomeScope { extern int x; } // Header2.h namespace SomeScope { extern int y; } // Some CPP file #include "Header1.h" // access to x SomeScope::x = 5; #include "Header2.h" // access to y SomeScope::y = 6;

如果导入了iostream,为什么要使用名称空间 我是C++初学者,我最近被引入到像STD这样的命名空间中,但是,如果在IoSoad头文件中定义了像CUT和EnDL这样的函数,为什么要包括STD命名空间呢?或者这些函数实际上是在std名称空间中定义的?如果是这样,那么为什么要包含iostream文件呢 < P>一个C++文件可以在其中有一个命名空间,不同的C++文件可以在它们里面有相同的命名空间。 // Header1.h namespace SomeScope { extern int x; } // Header2.h namespace SomeScope { extern int y; } // Some CPP file #include "Header1.h" // access to x SomeScope::x = 5; #include "Header2.h" // access to y SomeScope::y = 6;,c++,std,iostream,C++,Std,Iostream,我希望这有帮助。名称空间就像一个存储各种标识符的地方,以避免名称冲突SomeScope::x与另一个Scope::x是完全不同的x标识符,命名空间和#include指令是不同的东西: 当您包含一个头文件(比如iostream)时,您告诉预处理器处理文件的内容,就像这些内容在包含文件出现的地方出现在源程序中一样 为什么要使用include而不是直接在那里抛出代码 发件人: (1) 它加快了编译时间。随着您的程序的增长,您的 如果所有内容都在一个文件中,那么所有内容都必须是 每次进行任何小更改时都

我希望这有帮助。名称空间就像一个存储各种标识符的地方,以避免名称冲突
SomeScope::x
与另一个Scope::x是完全不同的
x
标识符,命名空间和#include指令是不同的东西:

当您包含一个头文件(比如iostream)时,您告诉预处理器处理文件的内容,就像这些内容在包含文件出现的地方出现在源程序中一样

为什么要使用include而不是直接在那里抛出代码

发件人:

(1) 它加快了编译时间。随着您的程序的增长,您的 如果所有内容都在一个文件中,那么所有内容都必须是 每次进行任何小更改时都会完全重新编译。这可能不会 对于小程序来说似乎是件大事(事实并非如此),但当你 有一个合理大小的项目,编译时间可能需要几分钟 编译整个程序。你能想象不得不等待吗 每一个微小的变化之间有多长时间

编译/等待8分钟/“哦,糟了,忘了一个分号”/Compile/ 等待8分钟/调试/编译/等待8分钟/等等

(2) 它使您的代码更有条理。如果你把概念分成 如果是特定的文件,则在 你想做一些修改(或者只是看看它来记住如何修改) 使用它和/或它的工作方式)

(3) 它允许您将接口与实现分离。如果你 不明白这意味着什么,别担心,我们会看到它的实际行动 贯穿本文


另一方面,命名空间允许您在一个作用域下对类和函数进行分组。它们提供了一种避免这些实体之间名称冲突的方法,而不会给处理嵌套类带来不便。

如果使用名称空间std,则不必使用std::cout。
在这种情况下,写cout就足够了。

这是一个非常恰当的答案!为了进一步说明这一点,可以想象
使用namespace std
作为:假设编译器在代码中的某个地方遇到了
cout
。若我们并没有使用
名称空间std
,那个么编译器就不会确切地知道你们在谈论哪个
cout
。它可能是您定义的内容或C++中定义的实际<代码> cOUT/代码>。为了避免这种混淆,使用了名称空间。到目前为止,这似乎是不必要的,但当程序变大并跨越多个功能时,这就变得至关重要了。