adv*_*ner 7 c++ virtual-functions
我想要做的是Execute()运行并完成它调用Base::Done()然后调用Derived::Done().我这样做是因为Base上课Execute会做点什么,当它完成时会调用Derived::Done().我希望我能正确解释.有点像任务完成时调用的监听器.我有点坚持Base班级如何称呼Derived班级.
class Base
{
virtual void Done(int code){};
void Execute();
}
void Base::Execute()
{
}
class Derived : Base
{
void Done(int code);
void Run();
}
Derived::Done(int code)
{
}
void Derived::Run()
{
Execute();
}
Run Code Online (Sandbox Code Playgroud)
您可以使用模板方法:
class Base
{
public:
void Execute()
{
BaseDone(42);
DoDone(42);
}
private:
void BaseDone(int code){};
virtual void DoDone(int) = 0;
};
class Derived : Base
{
public:
void Run() { Execute(); }
private:
void DoDone(int code) { .... }
};
Run Code Online (Sandbox Code Playgroud)
这里,Base控制如何使用自己的派生方法Execute(),派生类型只需要通过私有虚方法实现该实现的一个组件DoDone().