c++引入命名空間,作為附加資訊來區分不同庫中相同名稱的函式,類,變數等,使用了命名空間即定義了上下問,本質上命名空間就是定義了乙個範圍。
定義命名空間:
命令空間的定義使用關鍵字namespace,後面跟命名空間的名稱,如下所示:
namespacenamespace_name
為了呼叫帶有命名空間的函式或變數,需要在前面加上命名空間的名稱,如下:
name::code;
採用例項來看看命名空間如何為變數或函式等實體定義範圍
/***namespace.cpp
***/
#include
using
namespace
std;
namespace
first_space
}namespace
second_space
}int
main()
執行結果:
exbot@ubuntu:~/wangqinghe/c++/20190814$ g++ namespace.cpp -o namespace
exbot@ubuntu:~/wangqinghe/c++/20190814$ ./namespace
inside first_space
inside second_space
using指令
可以使用using namespace 指令,這樣在使用命令空間時就可以不用在前面的加上命令空間的名稱。這個指令會告訴編譯器,後續的**將使用指定命名空間中的名稱。
/***using.cpp
***/
#include
using
namespace
std;
namespace
first_space
}namespace
second_space
}using
namespace
first_space;
intmain()
執行結果:
exbot@ubuntu:~/wangqinghe/c++/20190814$ g++ using.cpp -o using
exbot@ubuntu:~/wangqinghe/c++/20190814$ ./using
inside first_spaced
using指令也可以用來指定命令空間中的 特定專案,例如,如果只打算使用std命令空間的cout部分,可以使用以下語句:
using std::cout;
在隨後的**中,在使用cout時就可以不用加上命名空間名稱作為字首了,但是str命令空間中其他專案仍然需要加上命令空間作為字首:
/***std.cpp
***/
#include
using
std::cout;
intmain()
執行結果:
exbot@ubuntu:~/wangqinghe/c++/20190815$ g++ std.cpp -o std
exbot@ubuntu:~/wangqinghe/c++/20190815$ ./std
std::endl is used with std
using指令引入的名稱遵循正常的範圍規則,名稱從使用using指令開始可見的,直到該範圍結束。此時在範圍之外定義的同名實體是隱藏的。
不連續的命名空間
命名空間可以定義在幾個不同的部分中,因此命名空間是由幾個單獨定義的部分組成的。乙個命名空間的各個組成部分可以分散在多個檔案中,所以如果命名空間中的某個組成部分需要請求定義在另乙個檔案中的名稱,仍然需要宣告該名稱。下面的命名空間定義可以是定義乙個新的命名空間,也可以是為已有的命名空間增加新的元素。
namespacenamespace_name
巢狀的命名空間
命名空間可以巢狀,可以在乙個命名空間中定義另乙個命名空間:
namespacenamespace_name1
}
例項:
/***name.cpp
***/
#include
using
namespace
std;
namespace
first_space
namespace
second_space
}}using
namespace
first_space::second_space;
intmain()
執行結果:
exbot@ubuntu:~/wangqinghe/c++/20190815$ ./name
inside second_space
spring p命名空間 c命名空間
p命名空間 1.需要引入命名空間p 並不真實存在 是在spring內部中實現的 xmlns p 2.如果是引用注入需要加 ref字尾 p和c命名空間 並不適用於集合引數 c命名空間 1.需要引入命名空間c 並不真實存在 是在spring內部中實現的 xmlns c 2.可以使用c 引數名 或c 引數...
C 命名空間 預設命名空間與匿名命名空間
2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...
C 命名空間,也有叫命名空間
在c 中,名稱 name 可以是符號常量 變數 巨集 函式 結構 列舉 類和物件等等。為了避免在大規模程式設計中,以及在程式設計師使用各種各樣的c 庫時,這些識別符號的命名發生衝突,標準c 引入了關鍵字namespace 命名空間 名字空間 命名空間 名域 可以更好地控制識別符號的作用域。std是c...