C++名字空间

为什么要有名字空间(namespace)?

可以想一个这样的问题,如果两个人写一个项目各写一部份,他们同时取了一个相同名字的函数(int add(int a,int b)),在主程序中调用了add函数,哪么编译器将会报错,不知道要link哪个写的add函数。这就是为什么要名字空间的原因,可以很好的解决重名问题,不会污染全局标识符。

名字空间的定义:

用关键字 namespace,具体定义代码

如何使用名字空间内的成员:

如要调用名字空间内的成员,有三种方式:

1.在调用代码之前加一句  using  namespace Base;  ( 以上面定义的Base名字空间为例),这种可以用在比如以下代码都是要用到Base名字空间成员,这样可以减少加名字空间前缀的数量。

2.在调用的成员前加名字空间前缀,   Base::add(1,2);   这种一般用在只有一两处地方要用到某个名字空间时。

3.在要调用名字空间内成员时,先声明。using  Base::A;

名字空间(namespace)别名:

比如名字空间内有很多层名字空间,要访问最里面的就会不方便,前缀太长;

a::b::c::d::e::add(1,2);

解决这类问题可以将名字空间取个别名:

注:之前我们在看代码时,会有using namespace std;   std::cout等。现在相信大家都明白std就是一个名字空间,只不过它是C++标准的名字空间,所有C++标准库代码都在std名字空间内。