将子类分配给其超类时,虚函数会发生什么?

时间:2017-01-11 20:14:58

标签: c++

假设我的课程B来自课程A。如果B覆盖类f的虚方法A,那么当我将类B的实例分配给类{{1}的实例时,此虚方法会发生什么? }}?

最基本的例子:

A

输出:

#include <stdio.h>

class A
{
  public:
    virtual void f()
    {
      printf("I am A\n");
    }
};

class B : public A
{
  public:
    virtual void f()
    {
      printf("I am B\n");
    }
};

int main()
{
  // Instance of B:
  B b;
  b.f();

  // Reference to A:
  A& a_ref = b;
  a_ref.f();

  // Assignment:
  A a = b;
  a.f();

  return 0;
}

当使用引用时,一切都按预期进行,但是在演员阵容中,我在这里错了。

0 个答案:

没有答案