使用命名空间std和库

6
为什么我们需要同时使用“头文件”和using namespace标签才能正确执行任何库函数。例如,除非我们使用iostream,否则cout将无法工作。同样,除非我们使用“using namespace std”,否则它也不起作用。我的问题是为什么我们需要同时使用using namespace std#include <iostream>才能成功执行cout

2
当我开始学习C++时,我也曾经有过这样的疑问。 - Irrational Person
实际上,在大多数情况下,你真的不需要使用 using namespace std;。事实上,最好不要使用它。请参阅 https://dev59.com/D3M_5IYBdhLWcg3wQQ3w。 - juanchopanza
1
我基本上问的是为什么要使用“using namespace std”或在您的情况下使用“std::cout”,当我们已经添加了iostream。我没有问哪个更好,“using namespace std”还是std::cout。无论如何,谢谢。 - Unbreakable
而且链接告诉你没有“为什么”。这是一个不好的想法,所以你应该避免它。 - juanchopanza
3个回答

7
包含库头文件使库功能对你的程序代码可见。否则,你的程序根本不知道该库的存在。这是必要的部分。
写入 using namespace std 只是允许你编写 cout 而不是完整名称 std :: cout 。这只是一种方便。

4

cout 定义在 std 命名空间中,您可以直接使用它,无需添加 using namespace

std::cout << "Hello, World" << std::endl;

谢谢回复。但我的问题是为什么我们需要它。既然我们一旦暴露了“iostream”,那么为什么不能简单地使用cout呢?为什么要使用std :: cout或using namespace std。 - Unbreakable
4
语言中添加了命名空间,它们可以帮助你减少或消除变量名称冲突。如果你自己编写了一个类名为"string",或者一个名为"cin"的变量,该怎么办呢? - Elliott Frisch

3
感谢您的回复。但我的问题是,我们为什么需要它呢?既然一旦暴露了“iostream”,那么为什么不能直接使用cout呢?
为什么要使用std :: cout或using namespace std?
如果不使用std命名空间,则编译器将尝试将cout或cin调用为如果它没有在命名空间中定义。由于它不存在,编译器会尝试调用不存在的内容!因此会发生错误。

我现在理解了这个概念。非常感谢! - Unbreakable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接