Why is std:: used by experienced coders rather than using namespace std;?
Possible Duplicate:
Why is 'using namespace std;' considered a bad practice in C++?
前几天,我问了一个问题,有人回答说,如果有人问了问题,请告诉他们正确的方法,而不是我认为有点奇怪的
所以我想我的问题是:为什么用
谢谢。
从C++常见问题解答:
Should I use
using namespace std in my code?Probably not.
People don't like typing
std:: over
and over, and they discover that
using namespace std lets the compiler see
anystd name, even if unqualified. The
fly in that ointment is that it lets
the compiler see anystd name, even
the ones you didn't think about. In
other words, it can create name
conflicts and ambiguities.
https://isocpp.org/wiki/faq/coding standards使用命名空间std
简单地说,您不太可能错误地使用错误的类型或函数,或者名称冲突。假设您使用自己的数学库,加上std,并以任意顺序声明使用这两个库。现在,它们都定义了函数pow。调用pow时使用的是哪个pow?我认为这值得额外打字。
我不认为有经验的程序员使用显式的命名空间,例如,你喜欢C++中的显式命名空间还是"使用"?
但是请注意,不应在头文件中导入名称空间,并且在某些情况下,显式名称空间更清晰,例如对于函数
我认为这是一个什么样的偏好。有些人喜欢在使用类时看到显式名称空间。一个例外是我从不在头文件中使用using-namespace-std。因为这可能会意外地更改正在使用此头文件的类的行为。
经验丰富的程序员使用任何能解决问题的方法,避免任何能产生新问题的方法。
因此,由于明显的原因,它们避免了使用指令的头文件级别。
他们试图避免对源文件中的名称进行完全限定。次要的一点是,在没有充分理由的情况下,当代码不足时,编写更多的代码并不优雅。重点是关闭ADL。
这些好理由是什么?有时你明确地想要关闭ADL。有时你想消除歧义。
所以可以这样做:1)使用指令的函数级和使用函数实现中的声明;2)使用源文件中的声明的源文件级;3)(有时)使用指令的源文件级。
命名空间是变量的附加限定符。假设我们在
现在,如果我在文件的顶部编写
但是,可以采取中间的方法,严格地说,在头(.h)文件中没有