我有一个类和一个给定的非常复杂的方法,为此我已经定义了一些辅助函数,但是在其他任何地方都没有使用它们。现在我想知道我是否应该
我的问题是,当涉及C ++风格时,我该怎么办?我觉得第二种解决方案违背了OOP原则,尽管C ++不是面向对象的语言,而是混合语言。我提到的函数,如果实现为类方法,将是静态的。
答案 0 :(得分:7)
将它们放入源文件中的 Unnamed namespace 未命名的命名空间允许您的函数在翻译单元中可见,但不能在翻译单元之外。您的功能仍然具有外部链接,但对于翻译单元以外的任何人来说,它们都是不可见的。
答案 1 :(得分:2)
FWIW,我要补充一点:到目前为止给出的答案都很好,但是从C ++ 11开始,我发现对于严格的辅助函数,有一个更好的,更少侵入性的解决方案:
在他们服务的方法中将它们定义为lambda。
这将使它们在其他任何地方都不可见,并为它们提供适当的访问权限,而无需使用friend
声明或使其成为私有静态成员。