1、3
多态性 张孝国
什么是虚函数
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,就是实现多态性(Polymorphism)。多态性是指为一个函数名称关联多种含义的能力,它通过一种名为“晚期绑定”的特殊机制,为一个函数名称关联多个含义,在程序运行时确定一个函数名称的具体含义。例如:
class A
{
public:
void print()
{
cout<<”This is A”<2、 print()
{
cout<<”This is B”<3、相应类的函数。现在把main()处的代码改为:
int main() //main2
{
A a;
B b;
A* p1=&a;
A* p2=&b;
p1->print();
p2->print();
return 0;
}
运行,结果是两个:This is A。
p2明明指向的是class B的对象,但调用的却是class A的print()函数,这不是我们所期望的结果,这主要是因为在编译时,编译器是按照p1和p2的类型来关联函数的。
解决这个问题需要使用虚函数,将一个函数设置成virtual函数,相当于告诉编译器:“目前不知道这个函数如何实现,等它在程序中
4、使用时(即运行时),再从对象实例中获得它的实现。
class A
{
public:
virtual void print() //现在成了虚函数了
{
cout<<”This is A”<