具有静态方法的类或具有普通方法的类

A class with static methods or class with normal methods

本文关键字:方法 静态方法      更新时间:2023-10-16

我有一个实用程序类,它不包含任何数据成员,只是通过它的方法提供一些服务。在这种情况下,哪种方法更好,是用所有静态方法创建一个类,还是用普通方法创建一个类,并通过创建类的对象来调用它们?这两种方法的优缺点是什么?

我认为最好的选择是使用namespace和free函数。原因:

  • 使用普通方法的class是令人困惑的,因为它需要实例化,但没有状态。

  • 只使用静态方法的class更好,但要求用户始终指定类的名称

  • 使用namespace和自由函数可以防止混淆/不必要的实例化的可能性,并且还允许用户别名namespace或使用using namespace,以避免在同一范围内使用多个函数时重复。namespace也可以跨多个文件

如果没有数据成员,就没有理由使用带有成员方法的类。你必须创建一个类的实例来调用你的方法(一个小的,但可以避免的开销)

调用类的静态方法不会产生开销。对于命名空间中的函数也是如此。