我应该使用命名空间std吗?

时间:2014-10-12 02:33:01

标签: c++ namespaces std

使用名称空间std是否是更好的编程习惯?

这样做会更好:

std::cout << "hi" << std::endl;

或者这个:

using namespace std;

    cout << "hi" << endl;

为什么有两种不同的方法可以做到这一点,哪种方式更好的编程实践?

编辑:

我仍然想知道为什么我们有两种不同的方法来调用这些函数,特别是因为已知使用命名空间会产生问题。那为什么我们甚至有命名空间呢?仅仅像std::cout一样打电话更安全。为什么他们允许我们使用它,如果它可能导致错误?

1 个答案:

答案 0 :(得分:3)

这取决于您正在撰写的项目。在大型项目中,命名空间往往会发生冲突 - 例如,如果您在某个时刻决定调用函数min(),但等待 - 那里已经有std :: min()函数可能会导致混淆哪个将运行在代码的某些部分。

所以,经验法则是使用命名空间std;只有在相当小的项目中,并且只要您编写大于单个文件的内容,就会使用自己的命名空间。毫无疑问,命名空间冲突是我们真正想要避免的,因为它是痛苦的错误来源。

附加点是,使用命名空间std;在cpp文件中危害较小 - 尤其是main.cpp。如果您经常使用std函数,这可以使您的代码更容易阅读。当使用名称空间最终在头文件中时,大问题开始了 - 这个标题被另一个标题包含在内,依此类推。在某些时候,很难知道声明使用哪些名称空间。 Thsi被称为命名空间污染。

但是,同样,在main.cpp中,情况并非如此,如果使用得当,它可以简化代码。