嵌套或非嵌套匿名命名空间以隐藏实现细节

问题描述 投票:0回答:1

嵌套匿名命名空间与将其置于翻译单元的顶层有什么区别?

namespace Named {
    namespace {
        void impl () {...}
   }

   void fun ()
   {
       impl();
   }
}

或者

namespace {
    void impl () {...}
}

namespace Named {
    void fun ()
    {
        impl();
    }
 }
c++ namespaces
1个回答
0
投票

与所有命名空间相同 - 查找规则。在第一个示例中,如果

Named
已经拥有自己的
void impl(){}
,那将是一个错误。在第二种情况下,如果
Named::impl
存在,它将默默地接管
anonymous-namespace::impl
网上看

© www.soinside.com 2019 - 2024. All rights reserved.