多态
定义
多 态,就是同一个函数名具有多种状态,或者说一个接口具有不同的行为; C++的多态分为编译时多态和运行时多态,编译时多态也称为为静态联编,通过重载和模板来实现,运行时多态称为动态联编,通过继承和虚函数来实现。
以下内容为工程试验,学生/笔试请忽略
经过final
修饰的对象或修饰的方法不在具有多态性,为编译时确定。
通过传值调用的虚函数也是编译时确定
虚函数的实现机制
虚函数是通过虚函数表来实现的,虚函数表包含了一个类(所有)的虚函数的地址,在有虚函数的类对象中,它内存空间的头部会有一个虚函数表指针(虚表指针),用来管理虚函数表。当子类对象对父类虚函数进行重写的时候,虚函数表的相应虚函数地址会发生改变,改写成这个虚函数的地址,当我们用一个父类的指针来操作子类对象的时候,它可以指明实际所调用的函数。
通过对象的虚函数指针访问其类的虚函数表,获取实际的调用内容