首先,我要说的是一个纯粹的学术问题,因为我想做的事情可以通过多层继承来更好地完成。

就是说,我想知道是否有可能在不编写包装器或添加任何继承层的情况下用现有函数覆盖虚拟函数。码:

int myfunc2() { return 2; }

class Parent {
 public:
  virtual int myfunc() { return 0; }
};

class Child1 : public Parent {
 public:
  int myfunc() override { return 1; }
};

class Child2 : public Parent {
 public:
  // There a way to do this?
  // int myfunc() = myfunc2;
  // instead of this?
  int myfunc() { return myfunc2(); };
};

int main() {
  Child2 baz;
  return baz.myfunc();
}


我想通过简单地将声明“转发”到现有的myfunc声明中来覆盖Child2定义中的myfunc2

这有可能吗?

上下文:我有一堆子类,其中一些子类具有myfunc的相同定义,其中一些没有。更好的解决方案是创建一个中间子类,该子类定义公共myfunc并让相关的子类继承自该子类。

最佳答案

// There a way to do this?
// int myfunc() = myfunc2;
// instead of this?
int myfunc() { return myfunc2(); };



不,没有。

关于c++ - 用现有功能覆盖虚拟功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44555653/

10-13 08:15