命名空間提供了一種從邏輯上組織類的方式,防止命名衝突。 幾種常見語言 C++ 命名空間是可以嵌套的 嵌套的命名空間是指定義在其他命名空間中的命名空間。嵌套的命名空間是一個嵌套的作用域,內層命名空間聲明的名字將隱藏外層命名空間聲明的同名成員: C++ int x = 20; namespace out ...
命名空間提供了一種從邏輯上組織類的方式,防止命名衝突。
幾種常見語言
C++
命名空間是可以嵌套的
嵌套的命名空間是指定義在其他命名空間中的命名空間。嵌套的命名空間是一個嵌套的作用域,內層命名空間聲明的名字將隱藏外層命名空間聲明的同名成員:
int x = 20;
namespace outer {
int x = 10;
namespace inner {
int z = x;
}
}
int main()
{
std::cout << outer::inner::z; // 輸出10
return 0;
}
C#
嵌套的命名空間
命名空間聲明中聲明命名空間,各命名空間用”.”分隔。
例如:
namespace N1.N2
{
class A {}
class B {}
}
在語義上等效於
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
Java
package cn.org.web3d.x3dpad
Java中的命名空間意味著你只要擁有一個獨立的頂級功能變數名稱,就可以保證自己項目的絕對唯一性。
Objective-C
在Objective-C應用中的所有類名都必須是全局唯一的。命名一直是Objective-C的硬傷,和那些優雅的語言相比。蘋果官方建議兩個字母作為首碼的類名是為官方的庫和框架準備的,而對於作為第三方開發者,官方建議使用3個或者更多的字母作為首碼去命名我們的類。
PHP
namespace Vendor\Package\.....
它強調第一級Vendor就應該是唯一性標識,意味著你要擁有一個{Vendor}.com 的頂級功能變數名稱,才可以保證自己項目的絕對唯一性。比如,當我想到這一點時,我立馬去註冊了一個meanir.com的功能變數名稱來防身。