總結:
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>