0

在下面的类中,我将派生对象向上转换为基指针。然后我可以调用从 main 派生的“私有”成员函数。这怎么可能?我的直觉是一个函数是否可以被调用(即访问)是基于L值(Base * b)。调用什么函数基于 R 值(新派生),因为它是虚拟的。有人可以为我澄清一下吗?

#include <iostream>

class Base
{
  public :
  virtual void func1()
  {
    std::cout<<"Base func1";
  }
};

class Derived : public Base
{
  private :
  void func1()
  {
    std::cout<<"Derived Func1";
  }
};

int main()
{
  Base* b = new Derived;
  b->func1();
}

我的输出是

Derived func1
4

0 回答 0