c++ - 为什么 "using namespace std;"被认为是不好的做法?

标签 c++ namespaces std using-directives c++-faq

我听说 using namespace std; 是不好的做法,我应该直接使用 std::coutstd::cin反而。 为什么是这样?是否存在声明与 std 命名空间中的某些内容同名的变量的风险?

最佳答案

考虑两个名为 Foo 和 Bar 的库:

using namespace foo;
using namespace bar;

一切正常,您可以毫无问题地从 Foo 调用 Blah() 并从 Bar 调用 Quux()。但是有一天,您升级到 Foo 2.0 的新版本,它现在提供了一个名为 Quux() 的函数。现在您遇到了冲突:Foo 2.0 和 Bar 都将 Quux() 导入到您的全局 namespace 中。这将需要一些努力来修复,尤其是当函数参数恰好匹配时。

如果你用过foo::Blah()bar::Quux(),那么引入foo::Quux() 本来就是一个非事件。

关于c++ - 为什么 "using namespace std;"被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465972/

相关文章:

c++ - 如何限制 "using namespace ..."的范围? C++

c++ - 为什么 std::cout 以相同的小数精度打印 float 、 double 和长 double ?

c++ - 有截断吗?

c++ - 类构造函数在 C++ 中的工作原理

php - 这个 PHP 命名空间代码块是什么意思?

c++ - 在 C++ 中创建一个容器 'thing' 来保存静态函数。 'thing' 应该是什么?

c++ - 来自 Visual Studio 的 std 文件中的错误

c++ - 为什么 map::operator[] 设计缓慢?

c++ - 在 Visual Studio 中格式化 C++ 头文件

c++ - 段错误 - 大小 8 的读取无效