c++中有虚函数的类的每个对象都有自己的虚函数指针和虚函数表吗
时间: 2023-09-20 07:01:01 浏览: 268
C++类对象关于虚函数表详解
对于C++中有虚函数的类,每个对象都有自己的虚函数指针,但并不一定每个对象都有自己的虚函数表。
虚函数指针是一个隐藏的指针变量,用于指向对象的虚函数表。每个对象都有一个虚函数指针,它存储在对象的内存布局中。虚函数指针的值是在运行时动态确定的,它指向对象所属类的虚函数表。
虚函数表是一个保存了该类所有虚函数地址的数组,每个类只有一个虚函数表。虚函数表作为静态数据成员存储在该类的存储区域,并且由所有该类的对象共享。虚函数表的地址是由编译器在编译过程中确定的。
当某个对象调用虚函数时,虚函数指针会被使用,它会指向对应的虚函数表,从而找到正确的虚函数进行调用。
因此,每个对象都有自己的虚函数指针,但只有一个虚函数表。这样做的好处是可以节省内存空间,因为所有对象共享同一个虚函数表。
阅读全文