C ++在函数中继承默认操作

时间:2013-04-21 16:24:07

标签: c++ visual-c++ override

假设我有一个名为Base的抽象基类,它继承了另一个名为Rectangle的类(w / c具有x,y,w,h的属性)

//Base.h

class Base abstract : public Rectangle
{
public:

    Base();

    void Show()
    {

        if (!visible) return;

        //draw the stuff here.

    }

    virtual void PerformTask() = 0;

protected:

    bool visible;
    bool enable;
    //other member variables

};

对于继承此Base的所有类,它必须首先执行此简短操作:

void OtherClass1::PerformTask()
{

    if (!enable) return; // <- this one I am referring to.

    //else, proceed with the overriden operation

    //...
}

PerformTask()中,它是否可以进行默认操作,因为我不会在其所有实现中再次重新键入它,但同时会被覆盖并且首先执行short operation并保留?

1 个答案:

答案 0 :(得分:4)

是的,这可以做到;只需使PerformTask非虚函数调用实际重写函数:

// In Base:
void PerformTask() {
    if (not enabled) return;

    PerformTaskImpl();
}

virtual void PerformTaskImpl() = 0;

...然后在派生类中重写PerformTaskImpl

这实际上是一种非常常见的模式。