我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
在匿名命名空间内的"using namespace"语句中,询问以下内容是否合法
//file.cpp
//....
namespace
{
using namespace std;
}
int a(){
cout << "bla";
}
Run Code Online (Sandbox Code Playgroud)
答案是"它是".此外,使用命名空间指令通常被鄙视,即使插入cpp文件中也是如此,因为自引入统一构建(/sf/answers/453234211/)以来,头文件和实现文件之间的范围差异并不稳固.
我的问题:匿名命名空间是否使我免于此类问题,或者using指令是否仍能传播文件边框?在/sf/answers/180452331/中,提出了类似的方法.它是否也适用于匿名命名空间,它是否真的安全?当然std是一个糟糕的例子,但例如using namespace boost::assign;在某些cpp文件中会非常方便.