我现在可以看到为什么包含
是不好的做法using namespace std;
在项目的头文件中。我听说在私有的.cpp函数定义文件中包含这个指令并不是一个问题,因为它们通常不直接包含在main()中。模板化类是否有异常,通常必须包含.cpp定义文件才能正确编译和运行(除非直接在头文件中包含定义)?
那么,一般规则是:
1)不要在头文件中使用namespace std。 2)可以在私有的.cpp定义文件中使用它,除非定义是用于模板化的类。
答案 0 :(得分:6)
我使用的规则是“不要使用”使用命名空间“或任何文件中的命名空间别名作为#include的目标。”
同样作为一般规则,“使用命名空间”或命名空间别名应出现在文件中的所有#includes之后。