赞
踩
回答如下:
虚函数表(Virtual Function Table)针对类
,而不是对象。
每一个类都有一张虚函数表,存储中这个类所有虚函数的入口地址。同一个类的两个对象共享类的虚函数表
。当一个对象被创建时,它会在内存中分配一块空间用于存储对象数据和指向虚函数表的指针。这个指针始终指向该类的虚函数表,不会因为对象的不同而改变。
如果派生类重写了基类的虚函数
,那么派生类会在其自己的虚函数表中存储重写后的函数地址
。如果派生类没有重写基类的虚函数,那么它会继承基类的虚函数地址,并将其复制到自己的虚函数表中。
如果存在多重继承的情况,则派生类会生成多个虚函数表的指针,分别维护来自不同基类的虚函数表,其规则和单继承相同。
总之,虚函数是针对类的,同一个类的两个对象共享同一张虚函数表,虚函数表的内容由类的层次结构和重载情况决定。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。