2010-07-30 74 views

回答

10

当你有一个指向一个对象的指针时,该对象可能实际上是一个从指针类派生的类(例如,Vehicle *实际上指向一个Car对象;这称为“多态性“)。因此,有两种类型:指针的(静态)类型(在这种情况下为Vehicle)和指向对象(在这种情况下为Car)的(动态)类型。

静态类型意味着成员函数调用的合法性在最早可能的时刻被检查:在编译时由编译器检查。编译器使用指针的静态类型来确定成员函数调用是否合法。如果指针的类型可以处理成员函数,那么指向的对象也可以处理它。例如,如果车辆具有特定的成员功能,当然由于车辆是一种车辆,因此车辆也具有该成员功能。

动态绑定意味着成员函数调用中代码的地址是在最后可能的时刻确定的:基于运行时对象的动态类型。它被称为“动态绑定”,因为绑定到实际调用的代码是动态实现的(运行时)。动态绑定是虚拟功能的结果。