2011-03-17 41 views
13

什么是C++中使用的名称空间?什么是C++中使用的命名空间?

using namespace std; 
+3

可能的重复[目的是什么:“using namespace”?](http://stackoverflow.com/questions/4359706/whats-the-purpose-of-using-namespace) – 2011-03-17 01:05:09

+1

对于一般情况下'使用名称空间XXX;',请参阅下面的答案。对于'using namespace std;'的具体情况,我建议你永远不要这样做。导入整个'std'命名空间可能会导致太多问题。 http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5 – 2011-03-17 01:38:04

回答

33

命名空间用于防止名称冲突。

例如:

namespace foo { 
    class bar { 
     //define it 
    }; 
} 

namespace baz { 
    class bar { 
     // define it 
    }; 
} 

您现在有两个班的名字吧,这是完全不同的和独立的感谢命名空间。

显示的“使用名称空间”使您无需指定名称空间即可使用该名称空间内的类。即std :: string成为字符串。

2

它用于防止名称混淆,因此您可能有两个在不同名称空间中具有相同名称的类。

此外,它用于分类你的类,如果你看到.net框架,你会看到命名空间用于分类的类。例如,您可以为员工类定义名称空间,为任务类定义名称空间,并且这两个名称空间都位于公司类的名称空间内,因为名称空间可能包含子名称空间。

相同的命名空间可能存在于不同的文件中,因此using它可能会很有用,因为它可以让您能够直接使用每个#include d文件中的命名空间中的所有类。

这就是我现在所记得的。

1

有人可能会问,简单的大括号花括号{}足以解决名称冲突。仍然为什么有一个NameSpace。 Tamer上面提到的一个快速答案是,通过NameSpace,我们可以在另一个文件中打开相同的作用域。