1、多态性 张孝国1什么是虚函数简单地说,那些被 virtual 关键字修饰的成员函数,就是虚函数。虚函数的作用,就是实现多态性(Polymorphism) 。多态性是指为一个函数名称关联多种含义的能力,它通过一种名为“晚期绑定”的特殊机制,为一个函数名称关联多个含义,在程序运行时确定一个函数名称的具体含义。例如:class Apublic:void print() coutprint();p2-print();return 0;运行,结果是两个:This is A。p2 明明指向的是 class B 的对象,但调用的却是 class A 的 print()函数,这不是我们所期望的结果,这主要是因
2、为在编译时,编译器是按照 p1 和 p2 的类型来关联函数的。解决这个问题需要使用虚函数,将一个函数设置成 virtual 函数,相当于告诉编译器:“目前不知道这个函数如何实现,等它在程序中使用时(即运行时) ,再从对象实例中获得它的实现。class Apublic:virtual void print() /现在成了虚函数了 cout”This is A”endl; ;class B:public Apublic:void print() /这里一般要在函数前面加上关键字 virtual。 cout”This is B”endl; ;我们只需在把基类的成员函数设为 virtual,其派生类的相应的函数也会自动变为虚函数。所以,class B 的 print()也成了虚函数。但做为一种良好的编程风格,最好在派生类的相应函数前加上 virtual 关键字。运行,结果是:This is A 和 This is B。多态性 张孝国3总结: 用基类类型的指针来操作它指向的对象时,会根据对象的不同类型,调用其相应类的函数这个函数就是虚函数。