總結:
1.::ant 表根命名空間,或匿名空間
2.同時存在 ::ant::i 和::ant::blas::i, ant::detail::i時,在::ant::detail中使用i時,默認調用ant::detail::i
3.平級namespace 調用用,要加相應的命名空間
4.域內命名空間可省
5.即使存在多個相同名字的命名空間,不會報錯,按最局部分調用原則調用,如同全局變量與局部變量名字一樣時,優先調用局部變量
代碼:
<SPAN style="FONT-SIZE: 14px">#include <stdlib.h>
#include <iostream>
namespace detail
{
const int i=99;
}
namespace ant
{
namespace blas
{
const int i=0;
}//end blas
const int i=3;
namespace detail
{
const int i=33;
void test()
{
std::cout<<"i:"<<i<<std::endl; // 33
std::cout<<"::detail::i"<<::detail::i<<std::endl; // 99
std::cout<<"detail::i"<<detail::i<<std::endl; // 33
std::cout<<"::ant::blas::i:"<<::ant::blas::i<<std::endl;// 0
std::cout<<"ant::blas::i"<<::ant::blas::i<<std::endl; // 0
std::cout<<"blas::i"<<blas::i<<std::endl; // 0 平級
//std::cout<<"::blas::i"<<::blas::i<<std::endl; // error
std::cout<<"ant::i"<<ant::i<<std::endl;// 3
}
}// end detail
}//end namespace ant
using namespace std;
int main()
{
ant::detail::test();
return 0;
}</SPAN>