Pit*_*all 0 c++ virtual inheritance class
假设我有一种类动物和一种继承动物的类狗.假设我想调用一种特定于狗的'eat()'方法,但所有动物之间都有一些共享的吃代码,所以我知道我可以将'eat()'设为虚拟但是它不会使用基类代码,我应该只调用我的基类'eatAll()',然后从特定动物的每个吃方法都必须调用它?只是寻找最好的设计我猜.这是用c ++编写的
这是经典的模板方法模式.基本上:
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().
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |