首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果导入iostream,为什么要使用命名空间

如果导入iostream,为什么要使用命名空间
EN

Stack Overflow用户
提问于 2013-05-16 02:40:17
回答 3查看 881关注 0票数 3

我是C++的初学者,最近有人向我介绍了像std这样的名称空间。然而,如果像cout和endl这样的函数是在iostream头文件中定义的,那么为什么还要包含std名称空间呢?或者这些函数实际上是在std名称空间中定义的?如果是这样,为什么要包含iostream文件呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-16 03:03:57

名称空间和#include指令是不同的东西:

当您包含一个头文件(如iostream)时,您是在告诉预处理器处理文件的内容,就好像这些内容已经出现在源程序中出现在include出现的位置一样。

为什么要使用includes而不是直接把代码扔到那里呢?

来自:http://www.cplusplus.com/forum/articles/10627/

(1)它加快了编译时间。随着你的程序的增长,你的代码也在增长,如果所有的东西都在一个文件中,那么每次你做任何微小的改变时,所有的东西都必须完全重新编译。对于小程序来说,这可能看起来不是什么大问题(事实并非如此),但当您有一个大小合理的项目时,编译整个程序可能需要几分钟的时间。你能想象在每一个微小的变化之间都要等待这么长的时间吗?

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

(2)它使你的代码更有条理。如果您将概念分离到特定的文件中,当您想要进行修改时,更容易找到您正在寻找的代码(或者只是查看它以记住如何使用它和/或它是如何工作的)。

(3)它允许您将接口与实现分离。如果您不理解这意味着什么,请不要担心,我们将在整篇文章中看到它的实际应用。

另一方面,命名空间允许您在某个范围内对类和函数进行分组。它们提供了一种方法来避免这些实体之间的名称冲突,而不需要处理嵌套类。

票数 4
EN

Stack Overflow用户

发布于 2013-05-16 02:43:19

一个C++文件可以有一个命名空间,不同的C++文件也可以有相同的命名空间。

代码语言:javascript
复制
// 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;

我希望这能帮到你。名称空间就像是一个存储各种标识符的地方,以避免名称冲突。SomeScope::x是与AnotherScope::x完全不同的x标识符。

票数 6
EN

Stack Overflow用户

发布于 2017-11-19 06:17:59

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16572662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档