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

lsmepo6l  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(102)

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

  1. namespace Named {
  2. namespace {
  3. void impl () {...}
  4. }
  5. void fun ()
  6. {
  7. impl();
  8. }
  9. }

  1. namespace {
  2. void impl () {...}
  3. }
  4. namespace Named {
  5. void fun ()
  6. {
  7. impl();
  8. }
  9. }
czfnxgou

czfnxgou1#

与所有名称空间相同-查找规则。在第一个例子中,如果Named已经有自己的void impl(){},那将是一个错误。在第二种情况下,如果Named::impl存在,它将被默默地接管anonymous-namespace::implSee it online

相关问题