c+标头中的“使用命名空间”
在我们所有的c+课程中,所有的老师总是把using namespace std;
就在#include
在他们的.h
档案。这在我看来是很危险的,因为通过在另一个程序中包含那个头,我将把名称空间导入到我的程序中,也许没有意识到、有意或者想要它(头包含可能是非常深嵌套的)。
所以我的问题是双重的:我说的对吗?using namespace
不应在头文件中使用,和/或是否有某种方法可以撤消它,例如:
//header.husing namespace std {...}
还有一个类似的问题:头文件是否应该#include
它对应的所有标头.cpp
文件需要的文件,只需要那些标头定义所需的文件,并且让.cpp
档案#include
其余的,或者没有,并声明它所需要的一切extern
?
这个问题背后的理由和上面的一样:我不想在包括.h
档案。
而且,如果我是对的,这是一个常见的错误吗?我的意思是在现实世界的编程和“真实的”项目中。
谢谢。