3

我有一个类和一个给定的相当复杂的方法,为此我定义了一些辅助函数,但是这些函数在其他任何地方都没有使用。现在我想知道我是否应该

  • 将它们添加到我的课程中——这似乎是根据 OOP 范式应该做的事情
  • 将它们单独保存在我的实现文件中 - 因为用那种半冗余方法填充我的类定义会使我的类定义的可读性降低。

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

4

2 回答 2

8

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

于 2013-01-23T15:04:17.930 回答
3

FWIW,我要补充一点:到目前为止给出的答案都很好,但是从 C++11 开始,我发现对于严格的辅助函数,有一个更好且侵入性更小的解决方案:

在它们所服务的方法中将它们定义为 lambdas。

这将使它们在其他任何地方都不可见,并赋予它们适当的访问权限,而无需使用friend声明或使它们成为私有静态成员。

于 2013-01-23T15:20:05.917 回答