Простори імен - це важливий засіб організації коду.
Дві функції можуть мати колізію імен, яку можна розвʼязати, розмістивши їх у різних просторах імен.
Простори імен можуть бути вкладеними, і це допомагає структурувати великі бази коду.
Доступ до просторів імен здійснюється через оператор розвʼязання області видимості ::.
У прикладі нижче показано використання двох різних функцій 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()};