对象的类型:
多态:
在C++语言中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待,对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数。
C++的多态性:
面向对象(OOP)的核心思想是多态性(polymorphism)。多态这个词源于希腊语,含义为“多种形式”,我们把 具有继承关系的多个类型成为多态类型。因为我们能使用这些类型的“多种形式”而无需在意它们的差异。引用或指针的静态类型与动态类型不同这一事实正是C++语言支持多态性的根本所在。当我们使用基类的引用或指针调用基类中定义的一个函数时,我们并不知道该函数真正作用的对象是什么类型,因为它可能是一个基类的对象也有可能是一个派生类的对象。如果该函数是虚函数,则直到运行时才会决定到底执行哪个版本,判定的依据是引用或指针所绑定的对象的真实类型。
另一方面,对非虚函数的调用是在编译时进行绑定。类似的,通过对象进行的函数调用也在编译时绑定。对象的类型是确定不变的,我们无论如何都不可能令对象的动态类型与静态类型不一致,因此,通过对象进行的函数调用将在编译时绑定到该对象所属类的函数版本上。
1.静态多态
静态链编或早绑定:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换&#x