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

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

别人告诉我写 using namespace std;在代码中是错误的,我应该使用 std::coutstd::cin直接代替。

为什么是 using namespace std;被认为是一种不好的做法?它是低效的还是有风险声明不明确的变量(与 std 命名空间中的函数同名的变量)?它会影响性能吗?

最佳答案

这与性能完全无关。但请考虑一下:您正在使用两个名为 Foo 和 Bar 的库:

using namespace foo;
using namespace bar;

一切正常,您可以调用 Blah()来自 Foo 和 Quux()从酒吧没有问题。但是有一天你升级到新版本的 Foo 2.0,它现在提供了一个名为 Quux() 的功能。 .现在你有一个冲突:Foo 2.0 和 Bar import Quux()进入您的全局命名空间。这将需要一些努力来解决,特别是如果函数参数碰巧匹配。

如果您使用过 foo::Blah()bar::Quux() ,然后介绍foo::Quux()本来是一个非事件。

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

相关文章:

c++ - 为什么 std::string 没有虚拟析构函数?

c++ - std::vector::erase() 删除错误的元素

c++ - 从数组中选择一个数字

c++ - 指针地址

c++ - 有没有办法在没有命名空间的情况下在 C++ 中嵌套枚举?

java - 解析带有未绑定(bind)前缀的 xml

Android ndk std::to_string 支持

c++ - 通过基类虚函数获取派生类型

c++ - 派生类调用基类对象的方法

namespaces - Tcl:获取命名空间下定义的所有变量