學習c 第五天 命名空間

2021-09-27 01:34:53 字數 1694 閱讀 4942

1、命名空間的使用

一般為了**的衝突,都會用命名空間。例如,對於android**會使用android作為命名空間。

namespace android;

在code中使用的時候可以用android::加具體的類方法。也可以直接使用using namespace android;

namespace 是c++中的關鍵字,用來定義乙個命名空間,語法格式為:

namespacenamespace

namespace是命名空間的名字,它裡面可以包含變數、函式、類、typedef、#define 等,最後由包圍,而類的最後是有帶符號 ;,命名空間的沒有 ,

為了呼叫帶有命名空間的函式或變數,需要在前面加上命名空間的名稱

namespace::code; // code 可以是變數或函式

using 宣告不僅可以針對命名空間中的乙個變數,也可以用於宣告整個命名空間,您可以使用using namespace指令,這樣在使用命名空間時就可以不用在前面加上命名空間的名稱。這個指令會告訴編譯器,後續的**將使用指定的命名空間中的名稱。

乙個命名空間的各個組成部分可以分散在多個檔案中。所以,如果命名空間中的某個組成部分需要請求定義在另乙個檔案中的名稱,則仍然需要宣告該名稱。

巢狀的命名空間

namespace namespace_name1 

}

您可以通過使用 :: 運算子來訪問巢狀的命名空間中的成員:

// 訪問 namespace_name2 中的成員    using namespace namespace_name1::namespace_name2;

// 訪問 namespace:name1 中的成員     using namespace namespace_name1; 

2、在子類中引用基類的成員

來看下source code:

class t5base 

virtual ~t5base() {}

void test1()

protected:

int value;};

class t5derived : private t5base

};

基類中成員變數value是protected,在private繼承之後,對於外界這個值為private,也就是說t5derived的物件無法使用這個value。

如果想要通過物件使用,需要在public下通過using t5base::value來引用,這樣t5derived的物件就可以直接使用。

同樣的,對於基類中的成員函式test1(),在private繼承後變為private,t5derived的物件同樣無法訪問,通過using t5base::test1 就可以使用了。

注意,using只是引用,不參與形參的指定。

using value_type = _ty;

using allocator_type = _alloc;

例如上面source code 中:

using value_type = _ty
以後使用value_type value; 就代表_ty value;

一周學C 第五天 命名空間

一周學 c 第5天 命名空間1問題 越大的程式包含的名字越多 越多的名字 越大的可能性導致命名衝突 你是怎樣命名以反映結構 顯示的字首不是乙個很好的解決方法 sealed class book sealed class guibook 這是傳統的命名方法 2解決的方法 乙個命名空間是乙個邏輯的命名系...

C 學習第五天

c 中的is和as is可用於任何型別。例如 int a 10 a is object true object o 10 o is int true o person o is int false as右側型別必須為引用型別或可空型別。as操作如果失敗,不丟擲異常,而是返回null 結構 struc...

學習第五天

清楚測試用例是什麼 測試用例的重要性 有效性 測試用例是測試人員測試過程中的重要參考依據,準確的測試用例的計畫 執行和跟蹤是 測試的有效性的有力證明 可復用性 設計良好的測試用例可以重複執行,能節約時間,提高測試效率 易組織性 清晰詳細的測試用例能夠便於測試執行的開展 可評估性 測試用例的通過率是檢...