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/54024925/

相关文章:

c++ - Boost python 和 Mac Mavericks

c++ - 我应该在命名空间中包含头文件吗?

c++ - 同时遍历两个 std::lists

c++ - 替换(或重新实现?)std::function 用于一些统计和测试

c++ - 错误 : expected initializer before ‘std’

c++ - 如何在 Thrift 中使用 C++ 获取客户端 IP 地址

c++ - Google Chrome浏览器在访问网站时发送第二个长度为0的请求吗?

c++ - 在 C++ 中使用 operator [] 重载区分读取和写入

python - Django: "projects"与 "apps"

c++ - 关于 C++ 中的函数指针