使用现有功能覆盖虚拟功能

时间:2017-06-14 22:24:35

标签: c++ inheritance

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

也就是说,我想知道是否可以使用现有函数覆盖虚函数而无需编写包装器或添加任何继承层。代码:

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定义,其中一些没有。{1}}。一个更好的解决方案是创建一个中间子类,它定义了公共myfunc,并让相关的子代继承。

2 个答案:

答案 0 :(得分:5)

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

不,没有。

答案 1 :(得分:0)

有一个问题。

非静态成员函数接受另一个隐式参数:指向对象本身的指针。虽然独立函数没有这样的参数,例如,您可能不会在独立函数的定义中使用关键字this或成员访问语法。