一尘不染

为什么是“using namespace std;” 被认为是不好的做法?

c++

其他人告诉我,using namespace std;用代码编写是错误的,我应该直接使用std::coutand std::cin

为什么被using namespace std;认为是不好的做法?它是效率低下还是有可能声明模棱两可的变量(与std命名空间中的函数具有相同名称的变量)?它会影响性能吗?


阅读 232

收藏
2022-01-21

共1个答案

一尘不染

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

using namespace foo;
using namespace bar;

一切正常,您可以毫无问题地Blah()从 Foo 和Quux()Bar调用。但是有一天你升级到 Foo 2.0 的新版本,它现在提供了一个名为Quux(). 现在你遇到了一个冲突: Foo 2.0 和 Bar 都导入Quux()到你的全局命名空间中。这将需要一些努力来解决,特别是如果函数参数恰好匹配。

如果您使用了foo::Blah()and bar::Quux(),那么引入 offoo::Quux()将是一个非事件。

2022-01-21