我的 C++ 项目中有一些数学方法(例如:点查找器、规范化等),它们可能可以用于项目中的不同类或不同位置。
我来自 C# 背景并且有困惑,如果在这种情况下,我应该制作一个包含所有这些方法的静态类并在程序中使用它们?或者我应该定义一个类并在我想要的任何地方通过类对象使用它?
在这种情况下什么是理想的?
我的 C++ 项目中有一些数学方法(例如:点查找器、规范化等),它们可能可以用于项目中的不同类或不同位置。
我来自 C# 背景并且有困惑,如果在这种情况下,我应该制作一个包含所有这些方法的静态类并在程序中使用它们?或者我应该定义一个类并在我想要的任何地方通过类对象使用它?
在这种情况下什么是理想的?
如果方法之间没有关系,您应该将它们定义为类中的公共静态函数或专用命名空间中的常规函数。这两种方式都只会为您的方法定义一个范围。
在 C++ 中,你可以定义一个类,在这个类中,你将这些方法定义为 public static,你可以在任何地方使用它。例如:
class Mathematical
{
public:
static void normalize();
}
您可以将该功能用作:
Mathematical::normalize().
与C#中的静态类函数相同
使用命名空间。将一堆静态函数粘贴在一个类中,其唯一目的是将它们组合在一起是一种 Java hack,以弥补其命名空间的不足。
好吧,我认为这取决于您的工作,所以如果您不指定更多内容,我无法给您具体的答案。
正如您所说,您可以在多个地方编写它,并且它会起作用,因此编译器会很高兴。现在我们需要取悦你——程序员。
所以问问自己“它应该在哪里?”。会想到的答案是有意义的。
关于数学运算:我认为他们应该有自己的带有静态方法的类(而不是静态类;请看下面的注释),除非它们仅用于一种类型。如果它们仅用于一种类型,则(通常)最好将其放在该类型中,即使作为非静态方法也是如此。
注意:C++ 不支持 C# 中的静态类(当然,除非您使用托管 C++)