C++创建"Abstract Class"的标准方法(纯虚拟类)

C++ standard way to create "Abstract Class" (Pure Virtual Class)

本文关键字:虚拟 方法 标准 创建 Abstract Class C++      更新时间:2023-10-16

我将从我们大多数人已经知道的开始:

如果我希望我的类是抽象的,我必须定义它的至少一个方法为"纯虚拟",例如,在这里,方法someFunction()被定义为"纯虚拟",因为它是用virtual关键字定义的,并且它被分配了0:

class SomeClass {
    virtual void someFunction() = 0;
};

我的问题是,当我想要一个"抽象类",即一个不能被实例化的类(如"纯虚拟"类),但我想实现它的所有方法。有什么标准的做法吗?

我当前的解决方法是丑陋的-我只是定义了另一个虚拟纯虚方法:

class UglyWorkaround {
    public:
        virtual void doAction1();
        virtual void doAction2();
        // My ugly workaround for making the class abstract - defining a dummy method
        virtual void thisIsADummyMethod() = 0;
};

这是非常糟糕的,因为任何派生的非抽象类都必须实现它

是否有更标准/流行的方式来定义和实现这样的类?

我想澄清-我不想要另一个丑陋的解决方案-我问是否有任何常用的标准方法。目标是使代码对其他程序员来说是可读的,这样他们就能立即理解这个类是抽象的

定义受保护的构造函数