我想在C++ 11中创建一个“静态类”,即只有静态方法并且不可能实例化或继承的类。 想出了以下解决方案:通过“删除”复制构造函数来阻止C++ 11类的实例化
class Foo final {
public:
static void methodA(...);
static int methodB(...);
Foo(const Foo&) = delete;
};
这样编译器创建既不是默认的也不是拷贝构造函数。 Visual Studio的IntelliSense也证实了这一点,因为它在输入Foo(
时不提供任何构造函数自动完成。
我想知道这个解决方案是否以任何方式比使默认构造函数私有的“常见”方法更可取。有没有优点/缺点?
为什么不使用名称空间呢? – jamesdlin
是的,如果你没有使用过类功能,那么你不会创建一个类。你正在创建一个名字空间。 – tadman
使构造函数保持私有状态是我们所能做的,没有delete关键字。效果是相同的,并且不生成代码。如果仅仅因为它更具可读性,我会使用新的语法。 –