代码:
#include<iostream>
using namespace std;
class A
{
int a;
public:
A():a(5) {}
virtual void print()const
{
cout<<a;
}
};
class B: public A
{
char b;
public:
B()
{
b='E';
}
void print() const
{
cout<<b;
}
};
void show(A &x)
{
x.print();
}
int main()
{
A d1,*p;
B d2;
p=&d2;
d1.print();
d2.print();
p->print();
show(d1);
show(d2);
return 0;
}
运行结果:
学习心得:
基类的print()函数被声明为虚函数,在声明派生类是被重载,这时派生类的同名函数print()就取代了其基类的虚函数,因此在使基类指针指向派生类对象后,调用print()函数时就调用派生类的print()函数。
本文通过一个C++示例介绍了如何使用虚函数实现多态。基类的虚函数被派生类重写,当基类指针指向派生类对象时,能够调用到派生类的函数,展示了动态绑定的效果。

被折叠的 条评论
为什么被折叠?



