C++库研究笔记——命名空间namespace 嵌套后的作用域问题
总结:
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>
补充:软件开发 , C++ ,