標籤:直接 nbsp png 分享圖片 system comm 相同 \n image
C++ 命名空間
C++ 應用程式中。例如,您可能會寫一個名為 func() 的函數,在另一個可用的庫中也存在一個相同的函數 func()。這樣,編譯器就無法判斷您所使用的是哪一個 func() 函數。
因此,引入了命名空間這個概念,專門用於解決上面的問題,它可作為附加資訊來區分不同庫中相同名稱的函數、類、變數等。使用了命名空間即定義了上下文。本質上,命名空間就是定義了一個範圍。
定義命名空間
命名空間的定義使用關鍵字 namespace,後跟命名空間的名稱,如下所示:
為了調用帶有命名空間的函數或變數,需要在前面加上命名空間的名稱,如下所示:
name::code; // code 可以是變數或函數,name是命名空間的名字
eg:
#define _CRT_SECURE_NO_WARNINGS#include<iostream>namespace space_test1{ typedef int T; int a = 1000; void fuc(void) { std::cout << "I am space_test1 \n"; }}namespace space_test2{ typedef double T; int a = 100; void fuc(void) { std::cout << "I am space_test2\n"; }}int main(){ //通過命名空間的不同,可以使用相同的函數,變數,類型 space_test2::T high = 1.1; space_test1::T age = 25; space_test2::fuc(); space_test1::fuc(); std::cout << "high=" << high << std::endl; std::cout << "age="<< age<<std::endl; std::cout << "space_test1::a=" << space_test1::a << std::endl; std::cout << "space_test2::a=" << space_test2::a << std::endl; system("pause"); return 0;}
using 指令
您可以使用 using namespace 指令,這樣在使用命名空間時就可以不用在前面加上命名空間的名稱。這個指令會告訴編譯器,後續的代碼將使用指定的命名空間中的名稱。
為什麼我們不推薦using namespace ...的做法:
命名空間使用這樣直接的聲明,破壞了它想要解決的同名函數,變數,類等問題,雖然在不引起二義性的情況下,我們會方便一些,因為可以少輸入幾個字元,但是,在不能保證是否有相同函數,變數,類的情況下,還是使用命名空間首碼更合適。
c++命名空間---namespace