强制派生类调用基函数

Mat*_*Mat 6 c++ virtual inheritance overwrite base-class

如果我从另一个派生一个类并覆盖一个函数,我可以通过调用派生类中Base::myFunction()的实现来调用基函数myFunc.

但是有没有办法在我的Base类中定义在任何情况下调用基函数,也没有在覆盖函数中显式调用它?(在执行派生函数之前或之后)

甚至更好,如果我有我的虚拟虚拟函数Base的类,和两个实现的私有函数before()after(),是有可能的定义Base之前,在任何派生类此功能后,类Base类被调用,before()并且after()将被称为?

谢谢!

sho*_*osh 21

不,这是不可能的.
但你可以通过调用不同的虚函数来模拟它:

class Base
{
public:
  void myFunc()
  {
    before();
    doMyFunc();
    after();
  }

  virtual void doMyFunc() = 0;
};
Run Code Online (Sandbox Code Playgroud)

  • 如果您使虚拟函数受到保护(甚至是私有),则禁用其他代码直接通过对base的引用调用virtual方法(不是如果它们引用了派生类型,因为派生类可以使该方法公开可用) (8认同)