您如何强制Abstract类的子类也成为Abstract?

问题描述

我想使用策略设计模式,但是,我想强制我的顶级策略类执行一个策略,即每个策略子类也都是Abstract,以便我可以信任我的开发人员进行更仔细的概括。

解决方法

public class A
{
    int x;
    A():x(0) {};
    virtual void foo() { x=x+1; }
    virtual void bar() = 0;
}

public class B : public A
{
    B():A() {};
    virtual void foo() { x=x-1; }
    virtual void bar() = 0;
}

恭喜,您在这里得到的子类示例仍然是抽象的。 没有尝试代码,但是我看不到任何可以阻止抽象子类的东西。

但是您将永远无法实例化A和B,这是您想要的吗?