在下面的类中,我将派生对象向上转换为基指针。我之后可以打电话给私人'成员函数派生自主。这怎么可能?我的预感是,是否可以调用函数(即访问)是基于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