【发布时间】:2014-12-06 19:15:27
【问题描述】:
using namespace std;
到目前为止,在我的计算机科学课程中,这就是我们被告知要做的所有事情。不仅如此,这也是我们被允许做的所有事情,否则我们的代码会受到惩罚。我了解到,通过查看在线发布的代码,您可以使用 ::std 或 std:: 来完成同样的事情。
我的问题一般是为什么?显然,为了学习者和简单性,使用全局声明更简单,但有什么缺点呢?在现实世界的应用程序中期待 ::std 是否更现实?我想补充一点,使用声明背后的逻辑/概念是什么?在我的课程中,这些都没有解释过,我想更好地掌握它。
作为一个普遍的问题:如果我没有学过这些内容、向量、模板、类或错误处理,我是否会错过很多基本的 C++ 功能?
提前致谢!
【问题讨论】:
-
我建议花一点时间阅读this question and its various posted answers。
using namespace std;无辜地坐在某个翻译单元中的一个杰出示例导致了意想不到的后果can be seen here。值得一读。 -
谢谢,我去看看!我试图事先找到一些例子,但其中很多都像是“是的,它有时会导致问题。”没有证据。
-
不分青红皂白使用
using namespace ...是恕我直言不好的做法,这可能会导致许多微妙的、难以找到的错误。它绕过了将名称空间引入语言的全部原因。话虽这么说,当using namespace ...的范围是restricted(通过命名空间或本地范围)时,它有适当的用途。即使std命名空间非常大并且包含许多 常用符号,所以我总是 避免使用using namespace std。 另见: The C++ FAQ -
但我应该补充一点,按照你的 CS 教授在课堂上告诉你的做,但不要接受任何人告诉你的任何事情。学习最佳实践是一个持续的过程,多年来你会从许多不同的人那里学到它们。 (即便如此,人们仍然会为其中一些争论,呵呵)。
-
教授教做什么做什么,惩罚你不这样做,不说为什么,这让我很不高兴。
using关键字可能会导致很多问题;我尽量不使用它(是的,在大多数情况下意味着非常冗长的代码)。
标签: c++