3 回答
TA贡献1818条经验 获得超8个赞
有很多人会反对我,但这就是我的看法:
类本质上是某种对象的定义。静态方法应定义与该对象定义密切相关的操作。
如果你只是想要一组与底层对象或一种对象的定义无关的相关函数,那么我会说只使用命名空间。就我而言,从概念上讲,这是更明智的。
例如,在您的情况下,问自己,“什么是MyMath?” 如果MyMath
没有定义一种对象,那么我会说:不要把它变成一个类。
但就像我说的那样,我知道有很多人会(甚至激烈地)不同意我(特别是Java和C#开发人员)。
TA贡献1780条经验 获得超1个赞
如果需要静态数据,请使用静态方法。
如果它们是模板函数,并且您希望能够为所有函数指定一组模板参数,那么在模板类中使用静态方法。
否则,使用命名空间函数。
回应评论:是的,静态方法和静态数据往往被过度使用。这就是为什么我只提供两个相关场景,我认为它们可以提供帮助。在OP的具体示例(一组数学例程)中,如果他想要指定参数 - 比如核心数据类型和输出精度 - 将应用于所有例程,他可能会执行以下操作:
template<typename T, int decimalPlaces>
class MyMath
{
// routines operate on datatype T, preserving at least decimalPlaces precision
};
// math routines for manufacturing calculations
typedef MyMath<double, 4> CAMMath;
// math routines for on-screen displays
typedef MyMath<float, 2> PreviewMath;
如果您不需要,那么一定要使用命名空间。
- 3 回答
- 0 关注
- 729 浏览
添加回答
举报