9 3命名空間

2021-10-03 22:38:00 字數 1915 閱讀 1949

在c++中,名稱可以是變數、函式、結構、列舉、類以及類和結構的成員。為了避免衝突,c++標準提供了命名空間的標準工具。

宣告區域(declaration region)和潛在作用區域(potential region),例如:在函式中宣告變數,那麼在函式中宣告的地方就是,宣告區域,這個變數的potential region就是在這個函式中。

在c++中新增了這樣一種功能,定義一種新的宣告區域來建立命名的命名空間。使用關鍵字namespace建立兩個命名空間:

namespace jack;}

;namespace jill

double fetch;

int pal;

struct hill;}

;

命名空間除了使用者自定義以外還存在另乙個命名空間——全域性命名空間(global namespace),它對應於檔案級宣告區域。命名空間之間不會發生名稱衝突。

可以新增名稱到已有的命名空間:

namespace jack

};

訪問命名空間的方法:

通過作用域解析運算子::,使用命名空間來限定該名稱;

jack::pail=

12.34

;jill::hile mole;

jcak::

fetch()

;

使用::來限定名稱,每次使用都需要限定,可以使用using宣告和using編譯指令。

1.using宣告使特定的識別符號可用,using編譯指令使整個命名空間可用

using jill::fetch;

//a using declaration

using宣告將特定的名稱新增到它所屬生命區域中。例如

namespace jill

;double fetch;

struct hill;}

char fetch;

intmain()

使用using宣告,有可能產生二義性

using jack::pal;

using jill::pal;

pal =

4;

如果使用作用域解析運算符號:

jack::pal =3;

jill::pal =

4;

2.using編譯指令和using宣告之間比較

namespace jill

double fetch;

struct hill;}

char fetch;

//global namespace

intmain()

intfoom()

3.命名空間的其他特性

命名空間進行巢狀

namespace elements

float water;

}

這裡的flame指的是elements:?:flame;

namespace myth
在訪問命名空間的名稱時,例如:

std::cin>>myth::fetch;
由於同時fetch位於jill空間中:

jill::fetch;

std::cout<

namespace mef=myth::elements::fire;

using mef::flame;

4.未命名的命名空間

作為內部靜態變數的替代品(static storage,internal linkage)

C 命名空間 預設命名空間與匿名命名空間

2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...

spring p命名空間 c命名空間

p命名空間 1.需要引入命名空間p 並不真實存在 是在spring內部中實現的 xmlns p 2.如果是引用注入需要加 ref字尾 p和c命名空間 並不適用於集合引數 c命名空間 1.需要引入命名空間c 並不真實存在 是在spring內部中實現的 xmlns c 2.可以使用c 引數名 或c 引數...

C 命名空間,也有叫命名空間

在c 中,名稱 name 可以是符號常量 變數 巨集 函式 結構 列舉 類和物件等等。為了避免在大規模程式設計中,以及在程式設計師使用各種各樣的c 庫時,這些識別符號的命名發生衝突,標準c 引入了關鍵字namespace 命名空間 名字空間 命名空間 名域 可以更好地控制識別符號的作用域。std是c...