c++ - 用现有函数覆盖虚函数

标签 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();
}

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

这或类似的东西可能吗?

上下文:我有一堆子类,其中一些具有相同的 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/

相关文章:

c++ - 如何在 C++ 中将函数作为可选参数传递?

c++ - 在访问引用类型的成员时总是使用左值是什么情况?

java - Java中调用了哪个重载方法

javascript es6类原型(prototype)链修改

java - 这段代码的输出是什么以及如何输出?

c++ - 如何在 CRTP 中调用派生模板函数?

javascript - 如何在 JavaScript 中获取所有类子级的列表?

c++ - 我的 for 循环怎么搞砸了?

python - 逐行跟踪和记录 C++ 程序的执行情况

c++ - 具有不可 move 的默认可构造值类型的 map/unordered_map