类的对象(使用单/多继承)有多少vptr取决于该类的继承方式和虚函数的数量。
在C++中,虚函数表(vtable)是一个指针数组,其中每个指针指向一个虚函数。虚函数表的作用是在运行时动态地确定对象的类型,并调用相应的虚函数。每个类对象都有一个指向其虚函数表的指针,称为vptr。
对于单继承的类,每个对象只有一个vptr,它指向该类的虚函数表。虚函数表中的每个函数指针对应该类的一个虚函数,以及其基类中的虚函数。如果该类没有定义任何虚函数,则不会为该类创建虚函数表。
对于多继承的类,每个对象有一个指向虚函数表的指针,该指针对应于该类的每个基类。因此,一个多继承的类可能有多个vptr,每个基类一个。
总之,一个类的对象的vptr数量取决于该类的继承方式和虚函数的数量。在单继承的情况下,每个对象只有一个vptr,而在多继承的情况下,每个对象有多个vptr。
领取专属 10元无门槛券
手把手带您无忧上云