在我们所有的C ++课程,所有的老师总是把using namespace std;
在之后#include
在它们的S .h
文件。在我看来,这很危险,因为通过将标头包含在另一个程序中,我可能会将名称空间导入到我的程序中,而可能没有意识到,有意或不想要它(标头包含可以非常嵌套)。
所以我的问题是双重的:我是对的,using namespace
不应该在头文件中使用它,并且/或者有某种方法可以撤消它,例如:
//header.h
using namespace std {
.
.
.
}
同样,还有一个问题:标头文件应该是#include
其对应.cpp
文件所需的所有标头,还是标头定义所需的所有标头,然后让.cpp
文件#include
剩下的标头,或者什么都不需要,并将其需要的所有内容声明为extern
?
问题背后的原因与上面的相同:包含.h
文件时,我不希望感到惊讶。
另外,如果我是对的,这是常见错误吗?我的意思是在现实世界中编程和在那里的“真实”项目中。
谢谢。
using namespace
语句而导致名称冲突,则可以使用完全限定的名称来解决问题。