C++ 如何实现动态绑定(bind)和静态类型?
最佳答案
当您有一个指向对象的指针时,该对象实际上可能属于派生自指针类的类(例如,实际上指向 Car 对象的 Vehicle*;这称为“多态性” ).因此有两种类型:指针的(静态)类型(在本例中为 Vehicle)和指向对象(在本例中为 Car)的(动态)类型。
静态类型意味着尽早检查成员函数调用的合法性:由编译器在编译时检查。编译器使用指针的静态类型来判断成员函数调用是否合法。如果指针的类型可以处理成员函数,那么指向的对象当然也可以处理它。例如,如果 Vehicle 具有某个成员函数,那么 Car 肯定也具有该成员函数,因为 Car 是一种 Vehicle。
动态绑定(bind)意味着成员函数调用中代码的地址是在最后可能的时刻确定的:基于运行时对象的动态类型。之所以称为“动态绑定(bind)”,是因为绑定(bind)到实际调用的代码是动态完成的(在运行时)。动态绑定(bind)是虚函数的结果。
关于C++ 动态绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3375876/