C++类的继承机制的一个特点是多态性。所谓多态性是指子类和父类中具有相同函数名但不同操作的函数。那么问题来了,同一个函数名在调用时该选择那个函数体呢?其中一个方法是静态绑定,即编译时选择函数体,也叫缺省的函数调用方式。
动态绑定即在运行时选择函数体,是桥接子类和父类之间同名函数的接口。侧重于父类对象对子类同名函数调用的实现。动态绑定通过虚函数实现,使用规则有4点:
1. 要有一个继承层次 2. 在基类中要定义虚函数 3. 在派生类中要对基类中定义的虚函数进行重定义 4. 要通过基类指针(或基类引用)来调用虚函数
case:
#include <iostream>
using namespace std ;class a
{ public: virtual void h(double) { cout << "aaaaaa!" << endl ; } };class b: public a
{ public: void h(double) { cout << "bbbbbb!" << endl ; } } ;int main()
{ class a *p , pp; class b obj ; p = &obj ; p->h(77.08); pp.h(77.08); return 0 ; }