假设我有一个类动物和一个继承动物的类狗。假设我想调用一个名为“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/