我如何使用继承的方法和相同的基类方法?

Pit*_*all 0 c++ virtual inheritance class

假设我有一种类动物和一种继承动物的类狗.假设我想调用一种特定于狗的'eat()'方法,但所有动物之间都有一些共享的吃代码,所以我知道我可以将'eat()'设为虚拟但是它不会使用基类代码,我应该只调用我的基类'eatAll()',然后从特定动物的每个吃方法都必须调用它?只是寻找最好的设计我猜.这是用c ++编写的

Luc*_*ore 5

这是经典的模板方法模式.基本上:

class Animal
{
    void Eat() 
    {
       //stuff specific to all animals

       SpecificEat();
    }
    virtual void SpecificEat() = 0;
};

class Dog : Animal
{
    virtual void SpecificEat()
    {
        //stuff specific to dog
    }
};
Run Code Online (Sandbox Code Playgroud)

使用此方法,您不必在派生类的覆盖中显式调用基类方法.它由非自动调用virtual Eat(),具体功能由实现virtual SpecificEat().