是否允许在对象外定义辅助函数?

yau*_*ser 2 c++ coding-style

我有一个类和一个给定的非常复杂的方法,为此我已经定义了一些辅助函数,但是在其他任何地方都没有使用它们.现在我想知道我是否应该这样做

  • 将它们添加到我的班级 - 它似乎是根据OOP范例应该做的事情
  • 将它们保留在外部,即仅在我的实现文件中 - 因为用这种半冗余方法填充我的类定义会使我的类定义更不易读.

我的问题是当涉及C++风格时我该怎么办.我觉得第二种解决方案违背了OOP原则,尽管C++不是面向对象的语言,而是混合语言.我提到的函数,如果实现为类方法,将是静态的.

Alo*_*ave 7

将它们放在源文件中的未命名命名空间中.
未命名的命名空间允许您的函数在翻译单元中可见,但不能在翻译单元之外.您的功能仍然具有外部链接,但对于翻译单元以外的任何人来说,它们都是不可见的.