我需要结合几种方法而不添加一些数据成员。 有任何想法吗?

最后发布: 2008-11-28 16:35:36


问题

让我们说我需要写几个处理一些数据的函数。 这些函数执行单个任务 - 一些数学计算。 我想没有必要将它们与一些数据成员结合起来。

我要用:

  1. 没有数据成员的类,并将这些函数声明为静态方法,因此我可以在不创建类对象的情况下使用它们,
  2. 或匿名命名空间,
  3. 或者我可能需要在架构和设计方面更复杂的东西?

实际上,我写的语言是C ++,但我认为这个问题并不取决于开发语言是什么。

c++ oop
回答

在C ++中,我使用的是实用程序命名空间,而不是只使用静态方法的类。


回答

我不明白你为什么要把它们放在一个匿名的命名空间里。 这样做是为了确保这些功能仅用于一个编译单元,这与您的问题无关。

现在,要在类中的静态函数或实用程序命名空间中的自由函数之间进行选择,它可以满足您的需求。 这些解决方案之间存在一些差异:

  • 在类中,您可以将某些功能设置为private,protected或public。 例如,您可能拥有私有函数来执行公共函数所需的常见操作。
  • 可以扩展命名空间,并将它们的定义分布在多个文件中。
  • 类可以是子类(因此它们的功能也可以扩展)。 您可以拥有一个带有受保护静态函数的模型,并将客户端类子类化为此类,以便更好地进行封装。