支持功能声明应该去哪里?

Dan*_*iel 0 c++ header-files private-header

我有一个.cpp源文件,其中包含一些需要公开访问的函数和一些仅在此源文件中使用的支持函数.

我已经将所有这些函数声明放在头文件中,因为我个人觉得查看一个类在一个地方提供的所有内容很有用.但是,我想指出这些函数是否供内部使用,类似于private访问修饰符,但不使用类(它们是独立函数).

一些可能的解决方案:

  • 将私有声明放在源文件中.
  • 将私有声明放在单独的标头中.

这两种解决方案都将公共和私有函数分成了我想避免的单独文件.

Ale*_*lin 6

如果这些功能不适合公共使用,则不应将其放入标题中.将它们放入它们使用的源文件中.

要完全隐藏这些函数不在源文件之外使用,通常会执行以下操作之一:

  • 函数声明为static.
  • 函数被放入一个未命名的namespace.

后者被认为是优选的.实际上,C++标准7.3.1.1规定:

在声明命名空间作用域中的对象时,不推荐使用static关键字,unnamed-namespace提供了一个更好的替代方法.

有关未命名的命名空间与静态的更多讨论,请参阅未命名/匿名命名空间与静态函数以及相应的comp.lang.c ++.主持线程.

  • 我认为问题是关于独立函数:_"类似于私有访问修饰符,但不使用类"_.@Daniel,我错了吗? (2认同)
  • 不可以.`include`指令只是在文本上替换为包含的头文件的内容.因此,头文件中的所有内容都可以访问它所包含的文件. (2认同)