简单讲一下虚函数的作用于意义
首先,我们来看这样一个例子,
A是父类,B是A的子类,他们有同样的一个函数C,当我们申请一个A的指针p,指向B,执行p->C时,调用的是A的C函数。但是,如果我们把父类的C函数定义为虚函数,那么在调用p->C的时候就还是调用的B的C函数。
这么做的意义在于,当有多个子类的时候,我们并不需要为每个类都申请一个他独有的指针,而是可以都申请父类的指针,指向子类,这样调用的时候还是用的是子类的函数。
具体的实现方式是用虚函数表,相当于是做一个地址映射,将虚函数的执行地址映射到子类的执行地址中。