*(p->vptr)[n](p)
p->vptr
:调用p中的虚指针,该虚指针指向类的虚表(p->vptr)[n]
:从虚表中索引到第n元素,即指向虚表中记录的第n个虚函数的指针*(p->vptr)[n]
:解引用指向虚函数的指针,得到一个可调用的虚函数*(p->vptr)[n](p)
:将自身(this指针)传递给虚函数,进行函数调用<aside> 💡
虚表(Vtable) :一个函数指针数组,存储了类中虚函数的地址,每个类的虚表是唯一的。
</aside>
<aside> 💡
虚指针(Vptr) :对象的成员,指向虚表。
</aside>