纯虚拟和虚拟有什么区别

use*_*514 1 c++ virtual inheritance function execution

我正在修改代码,即祖父类是纯虚拟的,包括函数XYZ的纯虚拟版本; 然后,父类将XYS声明为虚拟,并且它具有实现.然后子类将XYZ声明为一个常规函数,其实现与parent1 9的实现不同,其本身就让我感到困惑).当我从另一个对象调用函数XYZ时,执行哪个实现?父母一个还是孩子一个?谢谢

Fre*_*urk 5

当我从另一个对象调用函数XYZ时,执行哪个实现?父母一个还是孩子一个?

我们来看看:

struct A {
  virtual void f() = 0;
};

struct B : A {
  virtual void f() { cout << "B::f\n"; }
};

struct C : B {
  virtual void f() { cout << "C::f\n"; }
};

int main() {
  C().f();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)