تُعد مساحات الأسماء أسلوبًا مهمًا لتنظيم الكود.
قد يحدث تعارض في التسمية بين دالتين، ويمكن حلّه بوضعهما في مساحات أسماء مختلفة.
يمكن تداخل مساحات الأسماء، وقد يساعد ذلك في هيكلة قواعد الكود الكبيرة.
يتم الوصول إلى مساحات الأسماء عبر عامل تحديد النطاق ::.
يوضح المثال أدناه استخدام دالتين مختلفتين باسم 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()};