命名空間是組織程式碼的重要方法。
兩個函式可能會有命名衝突,只要把它們放進不同的命名空間就能解決。
命名空間可以巢狀,這有助於組織大型的程式碼庫。
存取命名空間時,會使用作用域解析運算子::。
下面的範例示範了兩個不同的foo函式。
只要在它們前面加上各自的命名空間,就能一起使用。
namespace my_ns {
int foo() {
return 44;
}
namespace my_inner_ns {
int baz() {
return 90;
}
}
}
namespace my_other_ns {
int foo() {
return -2;
}
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
過度巢狀的命名空間可能會太冗長。
可以透過using匯入命名空間來去除這種冗長。
這會把所有名稱搬進全域命名空間。
為了保留一些區別,使用別名可能會有幫助。
int my_other_result{my_ns::my_inner_ns::baz()};
using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};
namespace m = my_ns; // setting an alias
namespace o = my_other_ns;
int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};