在下面的类中,我将派生对象向上转换为基指针。然后我可以调用从 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