qq_37790902
tengyunyang
采纳率0%
2018-12-12 07:44

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;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • jumbon jumbon 3年前

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

    点赞 评论 复制链接分享
  • weixin_41461277 _ZGq 3年前

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

    点赞 评论 复制链接分享

相关推荐