1. 害~!namespace也叫命名空间。
用来把一个域涵盖的空间里的东西统一用一个名称来命名。
避免重复(命名空间污染)。比如,我们引用了一个库,其中有个函数abc(),同时又引用了另一个库,其中也有一个函数叫abc(); 那我们调用abc()函数的时候,就出现了冲突。namespace就是用来解决这样的冲突滴。
2. namespace怎么用
定义namespace 的时候,后面紧跟名字(e.g. xyz),然后这个命名定义的作用域使用花括符“{}”来括起来。
namespace xyz {
void abc(void)
{
std::cout << "hello world" << std::endl;
}
}
使用namespace定义中的函数的时候,默认是需要使用双冒号引用对应函数的,但是也可以使用“using namespace xxx" 来声明一个默认的命名空间:
#include <iostream>
namespace xyz {
void func(void)
{
std::cout << __func__ << __LINE__ << std::endl;
}
}
void caller_a()
{
xyz::func();
}
void caller_b()
{
using namespace xyz;
func();
}
int main(void)
{
caller_a();
caller_b();
return 0;
}
当然,我们的命名空间也可以嵌套使用;而且也可以指定默认的命令空间:
#include <iostream>
namespace x {
namespace y {
namespace z {
void func(void)
{
std::cout << __func__ << __LINE__ << std::endl;
}
}
}
}
void caller_a()
{
x::y::z::func();
}
void caller_b()
{
using namespace x::y::z;
func();
}
int main(void)
{
caller_a();
caller_b();
return 0;
}