使用命名空间std和模板类

时间:2013-12-13 18:59:17

标签: c++ templates namespaces

我现在可以看到为什么包含

是不好的做法
using namespace std;

在项目的头文件中。我听说在私有的.cpp函数定义文件中包含这个指令并不是一个问题,因为它们通常不直接包含在main()中。模板化类是否有异常,通常必须包含.cpp定义文件才能正确编译和运行(除非直接在头文件中包含定义)?

那么,一般规则是:

1)不要在头文件中使用namespace std。 2)可以在私有的.cpp定义文件中使用它,除非定义是用于模板化的类。

1 个答案:

答案 0 :(得分:6)

我使用的规则是“不要使用”使用命名空间“或任何文件中的命名空间别名作为#include的目标。”

同样作为一般规则,“使用命名空间”或命名空间别名应出现在文件中的所有#includes之后。