c++父类指针为什么能访问子类私有成员函数

#include
using namespace std;
class A{
public :
virtual void Fun(){
cout<<"A::Fun()"<<endl;
}

};
class B:public A{
private :
void Fun(){
cout<<"B::Fun()"<<endl;
}

};

int main(){
A *pa = new A;
pa->Fun();
pa = new B;
pa->Fun();
return 0;
}

0

2个回答

因为pa是一个A*型指针,pa->访问的始终是A类的成员。A类的public的fun()函数当然可以由它的对象访问了。(这个程序运行结果应该是两个A::fun())

0
qq_37790902
qq_37790902 结果是 A::Fun() B::Fun()
6 个月之前 回复

因为 virtual void Fun() 是虚函数, 类B继承类A,所以B::Fun()也是徐函数,而且是重写了类A的Fun()函数,在main函数创建了一个B类的实例,并用一个父类A的指针指向它,根据虚函数的继承,这个指针将会调用类B的Func函数,这个main函数写法很有问题啊,创建了两个实例都没有删除,有内存泄漏

0
qq_37790902
qq_37790902 B中的Fun()是私有的啊
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!