别人告诉我,在代码中写使用命名空间std;
是错误的,我应该直接使用std::cout
和std::cin
。
为什么 "使用命名空间std; "被认为是一种不好的做法?是效率低下,还是有可能声明模棱两可的变量(与std
命名空间中的函数同名的变量)?它是否会影响性能?
这与性能完全没有关系。但考虑到这一点:你正在使用两个名为Foo和Bar的库。
using namespace foo;
using namespace bar;
一切运行正常,你可以从Foo中调用Blah()
,从Bar中调用Quux()
,没有问题。但有一天,你升级到了新版本的Foo 2.0,它现在提供了一个名为Quux()
的函数。现在你有了一个冲突。Foo 2.0和Bar都将Quux()
导入到你的全局命名空间。这需要花费一些精力来解决,特别是如果函数参数刚好匹配的话。
如果你使用了foo::Blah()
和bar::Quux()
,那么foo::Quux()
的引入将是一个非事件。
另一个原因是惊喜。
如果我看到cout << blah
,而不是std::cout << blah
,我会想:这个cout
是什么?是普通的 "cout "吗?是一些特殊的东西吗?
这都是关于管理复杂性。使用命名空间会把你不想要的东西拉进来,从而可能使它更难调试(我说可能)。到处使用std::会让人更难读懂(更多的文字和所有这些)。
马到成功--以你最好的方式管理你的复杂性,而且你觉得自己有能力。