通过向上转播来呼叫私人功能

时间:2015-06-09 04:13:26

标签: c++ private upcasting

在下面的类中,我将派生对象向上转换为基指针。我之后可以打电话给私人'成员函数派生自主。这怎么可能?我的预感是,是否可以调用函数(即访问)是基于L值(Base * b)。要调用的函数是基于R值(new Derived),因为它是虚拟的。有人可以帮我解释一下吗?

#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

0 个答案:

没有答案