C 命名空間解釋

2021-09-07 03:49:00 字數 1471 閱讀 4943

using關鍵字

如果在程式中需要多次引用某個命名空間的成員,那麼按照之前的說法,我們每次都要使用範圍解析符來指定該命名空間,這是一件很麻煩的事情。為了解決這個問題,人們引入了using關鍵字。using語句通常有兩種使用方式:

using namespace 命名空間名稱;

將整個命名空間釋放。

using 命名空間名稱::成員;

釋放某個命名空間的某個成員

例如:using namespace std;

using namespace std::cin;

產生原因:

使用命名空間的目的是對識別符號的名稱進行本地化,以避免命名衝突。在c++中,變數、函式和類都是大量存在的。如果沒有命名空間,這些變數、函式、類的名稱將都存在於全域性命名空間中,會導致很多衝突。比如,如果我們在自己的程式中定義了乙個函式toupper(),這將重寫標準庫中的toupper()函 數,這是因為這兩個函式都是位於全域性命名空間中的。命名衝突還會發生在乙個程式中使用兩個或者更多的第三方庫的情況中。此時,很有可能,其中乙個庫中的名 稱和另外乙個庫中的名稱是相同的,這樣就衝突了。這種情況會經常發生在類的名稱上。比如,我們在自己的程式中定義了乙個stack類,而我們程式中使用的某個庫中也可能定義了乙個同名的類,此時名稱就衝突了。

namespace 關鍵字的出現就是針對這種問題的。由於這種機制對於宣告於其中的名稱都進行了本地化,就使得相同的名稱可以在不同的上下文中使用,而不會引起名稱的衝突。或許命名空間最大的受益者就是c++中的標準庫了。在命名空間出現之前,整個c++庫都是定義在全域性命名空間中的(這當然也是唯一的命名空間)。引入命名空間後,c++庫就被定義到自己的命名空間中了,稱之為std。這樣就減少了名稱衝突的可能性。我們也可以在自己的程式中建立自己的命名空間,這樣可以對我們認為可能導致衝突的名稱進行本地化。這點在我們建立類或者是函式庫的時候是特別重要的。

命名空間基礎

namespace 關鍵字使得我們可以通過建立作用範圍來對全域性命名空間進行分隔。本質上來講,乙個命名空間就定義了乙個範圍。定義命名空間的基本形式如下:

namespace 名稱 

namespace

counternamespace

else

}};}

然而,既然命名空間定義了乙個範圍,那麼我們在命名空間之外就需要使用範圍解析運算子來引用命名空間中的物件。例如,在命名空間counternamespace定義的範圍之外給upperbound賦值為10,就必須這樣寫:

counternamespace::upperbound = 10;

或者在counternamespace定義的範圍之外想要宣告乙個counter類的物件就必須這樣寫:

counternamespace::counter obj;

一般來講,在命名空間之外想要訪問命名空間內部的成員需要在成員前面加上命名空間和範圍解析運算子。

C 命名空間解釋

此文 於網路,但由於種種原因,不能確定其始作者,特此說明 比如你加了using namespace std 那麼std命名空間中定義的東西就不用加std 了。而iostream.h這個標頭檔案是為了相容c,c根本就沒命名空間這個概念,所以不用加using namespace std 了 如果用通俗的...

C 命名空間通俗的解釋

通俗的解釋 using namespace std 這句的意思是 使用命名空間 std 比如 杭州有乙個西湖 潮州也有個西湖 如果你只說 西湖 可能別人就不知道你是說那裡的西湖 如果你說 杭州的西湖,別人就知道你是說杭州的西湖 這裡的杭州就好像是使用 using namespace std 如果是用...

C 的過載解釋與命名空間

c 這個詞在中國大陸的程式設計師圈子中通常被讀做 c加加 而西方的程式設計師通常讀做 c plus plus cpp 它是一種使用非常廣泛的計算機程式語言。c 是一種靜態資料型別檢查的,支援多重程式設計正規化的通用程式語言。它支援過程化程式設計 資料抽象 物件導向程式設計 製作圖示等等泛型程式設計等...