考慮一種情況,當我們有兩個同名的人,zara,在同乙個班裡。當我們需要對它們進行區分我們必須使用一些額外的資訊和它們的名字,比如這個區域,如果它們生活在不同的區域或者它們的母親或父親的名字,等等。
在您的c++應用程式中也會出現同樣的情況。例如,您可能正在編寫一些具有名為xyz()函式的**,並且還有另乙個可用的庫,它也具有相同的xyz()函式。現在編譯器無法知道您在**中引用的xyz()函式的哪個版本。
命名空間(namespace)被設計來克服這個困難,並被用作額外的資訊來區分類似的函式、類、變數等等,它們在不同的庫中具有相同的名稱。使用命名空間,您可以定義定義名稱的上下文。本質上,命名空間定義了乙個範圍。
在c語言中只有乙個全域性作用域:
1.c語言中所有的全域性識別符號共享乙個作用域
2.識別符號之間可能發生衝突
c++中提出了命名空間的概念:
1.命名空間將全域性作用域分成不同的部分,
2.不同命名空間中的識別符號可以同名而不會發生衝突
3.命名空間可以發生巢狀
4.全域性作用域也叫預設命名空間
namespace name/*...*/
}
c++命名空間的使用:
使用整個命名空間:using namespace name;
使用命名空間中的變數:using name::variable
使用預設命名空間中的變數: ::variable
#include #include namespace firstnamespace second; }
} int main();
printf("p.x = %d\n", p.x);
printf("p.y = %d\n", p.y);
system("pause");
return 0;
}
可以使用using namespace指令避免使用命名空間前置。該指令告訴編譯器後續**正在使用指定命名空間中的名稱。
example:
#include using namespace std;// first name space
namespace first_space }
// second name space
namespace second_space }
using namespace first_space;
int main ()
下列**可以引用cout而不預先新增命名空間:
#include using std::cout;int main ()
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...