多态性就是同一符号或名字在不同情况下具有不同解释的现象。多态性有两种表现形式:
- 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定。
- 运行时多态性:不同对象在收到相同消息时产生不同的动作,一般通过虚函数来实现,只有在运行时才能实现绑定,属于动态绑定。
虚函数
虚函数是在基类中用关键字virtual 标识的成员函数,可以在一个或多个派生类中被重新定义。如果一个函数被定义为虚函数,那么,即使是使用指向基类对象的指针来调用该成员函数,也能保证所调用的是正确的特定于实际对象的成员函数。这正是虚函数的优点所在。
一旦基类的成员函数被定义成了虚函数,则该基类的派生类的同名成员函数(名字、返回值类型、参数个数及类型均相同)不管前面是否加关键字virtual ,同样也具有虚特性,同样是虚函数。定义虚函数语法格式如下:
class <类名> { virtual <返回值类型><函数名>(<形参表>); };
虚函数机制:如果通过引用或指针访问虚函数,编译时就不会确定具体的调用函数,只有在运行时才根据具体的对象类型,调用其相应的函数实现。注意:虚函数的“动态绑定虚特性”必须通过基类的指针挥着基类的引用才能够表现出来,通过对象调用虚函数不能进行动态绑定。
时间: 2024-10-30 17:27:02