C ++如何实现动态绑定以及静态类型?
答案 0 :(得分:10)
当你有一个指向对象的指针时,该对象实际上可能是一个派生自指针类的类(例如,实际指向Car对象的Vehicle *;这称为“多态” )。因此有两种类型:指针的(静态)类型(在本例中为Vehicle),以及指向对象的(动态)类型(在本例中为Car)。
静态类型意味着在最早的时刻检查成员函数调用的合法性:编译器在编译时。编译器使用指针的静态类型来确定成员函数调用是否合法。如果指针的类型可以处理成员函数,那么指向对象当然也可以处理它。例如,如果车辆具有某种成员功能,那么Car也具有该成员功能,因为Car是一种车辆。
动态绑定意味着成员函数调用中的代码地址是在最后一刻确定的:基于运行时对象的动态类型。它被称为“动态绑定”,因为实际调用的代码的绑定是动态完成的(在运行时)。动态绑定是虚函数的结果。