c++ - 如何使用继承的方法和相同的基类方法?

标签 c++ class inheritance virtual

假设我有一个类动物和一个继承动物的类狗。假设我想调用一个名为“eat()”的方法,它是狗专用的,但所有动物之间都有一些共享的吃代码,所以我知道我可以将“eat()”设为虚拟,但它不会使用基类代码,例如,我是否应该只调用我的基类“eatAll()”,然后来自特定动物的每个 eat 方法都必须调用它?只是在寻找我猜的最佳设计。这是在 C++ 中

最佳答案

这是经典template method pattern .基本上:

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

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

class Dog : Animal
{
    virtual void SpecificEat()
    {
        //stuff specific to dog
    }
};

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

关于c++ - 如何使用继承的方法和相同的基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12807116/

相关文章:

c++ - system() 以不同的方式执行 shell 命令 C++

c++ - 创建一个可以访问类实例的唯一 ID 的运算符

inheritance - Modelica - 'extends' 带下拉菜单

java - Java中静态变量的继承规则是什么?

python - 什么时候使用 super(Baseclass, self).__init__

C++ 私有(private)继承和静态成员/类型

c++ - operator+ 和 operator= 如何一起使用?

C++ 序列化性能

c++ - 具有非八位字节对齐子字段的 96 位长位字段

python - 将整个程序包含在一个类中有什么好处?