C++ C++;:有没有办法防止抽象基类的实例化?

C++ C++;:有没有办法防止抽象基类的实例化?,c++,class,abstract,C++,Class,Abstract,除了有一个纯虚函数外,还有什么方法可以防止抽象基类的实例化 我可以这样做: class BaseFoo { virtual void blah() = 0; }; class Foo : public BaseFoo { virtual void blah() {} }; 但我想避免使用vtable。(根据) Microsoft ATL无法实现这一点(或者至少我认为它就是这么做的…)一个非常明显的方法是声明受保护的构造函数,并在非抽象派生类中声明公共构造函数 这当然会将核心性

除了有一个纯虚函数外,还有什么方法可以防止抽象基类的实例化

我可以这样做:

class BaseFoo
{
    virtual void blah() = 0;
};

class Foo : public BaseFoo
{
    virtual void blah() {}
};
但我想避免使用vtable。(根据)


Microsoft ATL无法实现这一点(或者至少我认为它就是这么做的…)

一个非常明显的方法是声明受保护的构造函数,并在非抽象派生类中声明公共构造函数


这当然会将核心性的负担转移到派生类上,但至少基类是受保护的。

您可以使受保护的构造函数变得更好。但可能不是“真正明显的”;-)嗯,与我期待人们发布的疯狂模板黑客相比,这是显而易见的!为什么要避免vtable?(而且,如果您永远不会使用该方法是虚拟的这一事实,为什么还要麻烦使用基类?)\