Meh*_*dad 4 c++ overriding visual-c++
当我覆盖一个方法时,有时我不小心忘记在C++中调用超类的方法.
有没有办法帮助弄清楚我什么时候覆盖一个方法,这样我就不会忘记调用超类的方法了?(像Java一样@Override,除了C++没有注释......)
一个建议是非虚拟的Inferface Idiom.即,使您的公共方法非虚拟,并让它们调用派生类可以覆盖的私有或受保护的虚方法,以实现其特定的行为.
如果您无法控制基类,则可以使用中间类:
class Foo // Don't control this one
{
public:
virtual void action();
};
class Bar : public Foo // Intermediate base class
{
public:
virtual void action()
{
doAction();
Foo::action();
}
protected:
virtual void doAction() = 0;
};
Run Code Online (Sandbox Code Playgroud)
从中派生类Bar并覆盖doAction()每个类.你甚至可以doBeforeAction()与doAfterAction()如果需要的话.