正确使用实现/隐藏命名空间

时间:2017-11-09 10:13:09

标签: c++11

假设在头文件中,我们有这样的东西。

namespace impl_{
   int do_something_(){
      return 1;
   }
}

int do_something(){
   using namespace impl_;
   return do_something_();
}

impl_::do_something_()被很好地隐藏了,但它被“包含”在输出对象文件中。

如果我们希望不包含该功能,我们需要执行inlinestatic ...或添加一个名称空间???

namespace impl_{
namespace {
   int do_something_(){
      return 1;
   }
}
}

......实际上,这也有效......

namespace {
namespace impl_{
   int do_something_(){
      return 1;
   }
}
}

请注意这对头文件和实现文件都有意义,但对于头文件来说这是一个更大的问题。

我很困惑 - 在头文件中执行此类“隐藏实现代码”的最佳方式/最佳做法是什么?

0 个答案:

没有答案