基类的指针指向派生类的对象,调用函数时:
①成员函数为虚函数,则调用派生类中的成员函数,找真正实现的函数
②成员函数不是虚函数,则调用基类中的成员函数
#include "iostream"
using namespace std;
class A
{
int x;
public:
A(int i) {x=i;}
void show()
{
cout<<"A class show():x="<<x<<endl;
}
virtual void display()
{
cout<<"A class virtual display():x="<<x<<endl;
}
};
class B:public A
{
int y;
public:
B(int i,int j):A(i) { y=j;}
void show()
{
cout<<"B class show(): y="<<y<<endl;
}
void display()//前面有无virtual都可以
{
cout<<"B class virtual display():y="<<y<<endl;
}
};
int main()
{
A a(5),*pa,*pb;
A c(60);
B b(10,20);
pa=&b;
pb=&c;
pb->show();
pb->display();
pa->show();
pa->display();
return 0;
}
结果:
A class show():x=60
A class virtual display():x=60
A class show():x=10
B class virtual display():y=20