#include<iostream>
using namespace std;
class P
{
public :
virtual ~P(){cout<<"P destruct"<<endl;}
public:
float x,y,z;
virtual void fun(){cout<<"P fun"<<endl;fun2();}
virtual void fun2(){cout<<"P fun2"<<endl;}
};
class Q:public P
{
public :
virtual ~Q(){cout<<"Q destruct"<<endl;}
public:
float x,y,z;
virtual void fun(){cout<<"Q fun"<<endl;P::fun();}
virtual void fun2(){cout<<"Q fun2"<<endl;}
};
int main()
{
//P b;
//b.fun();
//Q c;
//c.fun();
P *a = new Q;
a->fun();
delete a;
return 0;
}
//下面是输出结果,首先输出Q fun,没有疑问.然后输出P fun ,因为这里是显示指明调用,不涉及到this指针
//再输出 Q fun2,这里是this指针的作用,会查找虚函数表,后面两个输出就不解释了。
/*
Q fun
P fun
Q fun2
Q destruct
P destruct
*/
阿里笔试题,虚函数
最新推荐文章于 2021-10-17 20:13:39 发布