我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
我正在查看C++ 03标准中的第7.3.1.1节,期望找到对未命名的命名空间中定义的项的访问规则的一些描述.
对于未命名的命名空间,规则似乎略有不同,因为您无法完全限定对一个项目的访问权限.我知道至少在同一个翻译单元中,可以访问未命名的命名空间中的项目,就好像它们不在命名空间中一样.例如:
namespace {
int foo;
}
void something()
{
foo = 4;
}
Run Code Online (Sandbox Code Playgroud)
如果命名空间有名称,则无法执行此操作.那么,标准中为这些适用于未命名命名空间的例外规则定义的规则在哪里?