2011-03-17 73 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,我們可以在另一個文件中打開相同的作用域。