C++ 命名空间 namespace的 嵌套

多个namespace的定义方式

#include 

#include 

namespace detail // 定义一个namespace
{
const int i=99;
}

namespace ant // namespace 嵌套
{
    namespace blas
    {
        const int i=0;
    }//end blas

    const int i=3;

    namespace detail
    {
    const int i=33;
    void test()
    {
        std::cout<<"i:"<std::endl;  // 33
        std::cout<<"::detail::i"<<::detail::i<<std::endl; // 99
        std::cout<<"detail::i"<std::endl; // 33
        std::cout<<"::ant::blas::i:"<<::ant::blas::i<<std::endl;// 0 ::ant 表根命名空间
        std::cout<<"ant::blas::i"<<::ant::blas::i<<std::endl;   // 0
        std::cout<<"blas::i"<std::endl;   // 0 平级
        //std::cout<<"::blas::i"<<::blas::i<
        std::cout<<"ant::i"<std::endl;// 3
    }
    }// end detail

}//end namespace ant

using namespace std;
int main()
{
    ant::detail::test(); // 引用test() 需要:: 限定符
    return 0;
}

输出结果:

i:33
::detail::i99
detail::i33
::ant::blas::i:0
ant::blas::i0
blas::i0
ant::i3

多个namespace 的使用

namespace ABC
{
        void fun1(){printf("this is fun1.\n");}

        namespace map
        {
                void fun2(){printf("this is fun2.\n");}
        }
}

using namespace ABC;
using namespace ABC::map;  //使用两个namespace, 相当于把两个空间中的变量和函数都抠出来,供本函数使用

int _tmain(int argc, _TCHAR* argv[])
{
        fun1();
        fun2();

        return 0;
}

你可能感兴趣的:(C++,C++,namespace)