代码组织的一个重要方法是命名空间。
两个函数可能会发生命名冲突,可以通过将它们放入不同的命名空间来解决。
命名空间可以嵌套,这或许有助于组织大型代码库。
访问命名空间是通过作用域解析运算符::完成的。
下面的示例展示了两个不同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()};