最近C++中的using namespace std;
是什麼?什麼是'using namespace std;`,爲什麼我需要它用最近的C++編譯器編譯程序?
在舊的編譯器如Turbo C++中,這似乎是不受支持的,因爲它會導致編譯器錯誤。在最近的C++編譯器中,這是編譯和運行程序的唯一方法。
最近C++中的using namespace std;
是什麼?什麼是'using namespace std;`,爲什麼我需要它用最近的C++編譯器編譯程序?
在舊的編譯器如Turbo C++中,這似乎是不受支持的,因爲它會導致編譯器錯誤。在最近的C++編譯器中,這是編譯和運行程序的唯一方法。
C++使用「名稱空間」對相關的類和函數進行分組。 C++標準庫幾乎完全在稱爲std
(簡稱「標準」)的名稱空間內定義。當你#include
一個標準的頭如<string>
它包含了這樣的定義:
namespace std
{
template<typename T>
class allocator;
template<typename Ch>
class char_traits
{
// ...
};
template<typename Ch, typename Traits = char_traits<Ch>, typename Alloc = allcoator<Ch>>
class basic_string
{
// ...
};
typedef basic_string<char, char_traits<char>, allocator<char> > string;
}
名稱allocator
,char_traits
,basic_string
和string
在命名空間std
所有聲明的,因此包括報頭之後,你需要把它們稱爲std::string
等
或者,你可以使用一個使用指示符如using namespace std
這使得從命名空間std
當前範圍內所有可用的名字,所以遵循使用指令,您可以僅說string
而不是std::string
。
古TURBOC++編譯器不遵循標準的,所以它的標準庫只是把名稱在全局命名空間,所以你必須參考string
不std::string
,你不能使用using指令。第一個C++標準於1998年發佈,所以你不應該在2013年使用預標準編譯器,它不會是一種有價值的教育。
Turbo C++是一個20多年曆史的編譯器。你不應該使用它。
這就是說,
#include <iostream>
using namespace std;
在現代編譯器
相同寫入的Turbo C以下的標準頭。
#include <iostream.h>
Turbo C++是預命名空間。所以所有的標準頭文件都不在namespace std
。所以你不需要使用namespace std
。
Turbo C++中不會需要using namespace std
,因爲它不支持命名空間。 Turbo C++不支持大概50%的C++的東西 - 這是古老的。使用Visual C++(Express版本是免費的)或G ++ for C++。
非常感謝@ user93353,但在我們的大學教職員工說Turbo是最好的基礎編譯..沒關係,但在互聯網上搜索程序,我只得到新的..這些程序不工作在Turbo C++。什麼是備用? –
請參閱http://isocpp.org/get-started瞭解一些免費提供的現代編譯器 –
您需要找到一所新的大學。你顯然不會被教導真正的C++。 –
using namespace std;
告訴編譯器,您不關心標準庫中精心設計的std
的用法,但寧可自己處理不可預知的,有時甚至是災難性的名稱衝突。
請勿使用它。它是從來沒有必要,即使有些IDE自動插入它。如果您有其中之一,請在發生時刪除聲明。
要使用標準庫中的名稱,請使用std::
。就像這樣:
#include <iostream>
int main() {
std::cout << "Hello, world\n";
}
「,即使有些IDE自動插入它。」 - 哪些IDE會是? –
@FrankOsterfeld我已經看到Eclipse做到了。 ideone.com也是如此。 – juanchopanza
@FrankOsterfeld - 我不知道;有幾次,當我建議不使用它,我得到了一個答覆,它會自動插入。 –
它是[是應該避免的是(http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)。 – juanchopanza
你最近稱之爲「近」的是15歲,而你所說的「老」是真正古老而且最好被遺忘的 –
請在將來使用更多的描述性標題,如果可能的話花更多時間寫它來糾正簡單的錯誤和錯別字。 – user2802841