2014-10-10 25 views

回答

1

更好的主意:不要在您的代碼中使用using namespace std;。我從來沒有聽說過獲取std :: namespace中所有內容的方法。

+0

這不回答問題 – Conduit 2014-10-10 21:01:27

+1

這是比直接答案更好的建議。 – 2014-10-10 21:02:22

2

std命名空間中所有名稱的最權威列表是C++標準。目前的版本長度超過1300頁,可能包含std中的數千個唯一標識符。除此之外,一些編譯器還可能在std中包含一些特定於平臺的標識符,而這些標識符在很大程度上都是未公開的 - 因此您必須檢查相關編譯器的源代碼(如果可能的話),然後再次重新檢查它每次他們做一個補丁。

看起來令人畏縮?好,那麼希望我已經注意到了。

不要在您的代碼中執行using namespace std特別是在頭文件中不要use namespace std。將您的標識符放入它們的自己的名稱空間中。現在,您不必關心其名稱空間中的內容。打電話給你想要的東西。

我都是懶惰,但要聰明。如果你想從std具體的名稱來拉,這樣你就不必一遍又一遍地敲入std::,只拉那些東西:

using std::string; 

...並沒有什麼你不需要。但是只有在您的CPP文件中執行此操作,而不是在標題中。

+0

你贏了xD看起來像我會使用std :: 謝謝! – aatash 2014-10-11 21:31:58

0

除了John Dibling的回答提供的信息之外,我想指出,即使在您編寫using namespace std;時,也不一定要避免std名稱空間中的名稱。您可以通過限定名稱來解決using指令存在的歧義。您甚至可以使用頂級::限定'全局'名稱空間中的名稱。

#include <iostream> 
using namespace std; 

int cout; 

int main() { 
    ::cout = 10; 
} 

我想指出這一點的原因是,我知道有很多C++程序員,即使在使用它幾年,不知道如何在全局命名空間限定名稱。

相關問題