虚函数表指针 vptr 的存在
- 编译器在编译时会为每个含有虚函数的类添加一个隐藏的虚函数表指针 vptr ,vptr 指针对程序员是不可见的,它用于指向虚函数表,虚函数表中有每个虚函数的入口地址。
- 首先证明虚函数表指针 vptr 的存在。在一个类的成员函数前面加virtual 关键字,在另一个类中不加virtual关键字,除此之外两类的成员完全相同,然后用sizeof()判断两类的大小。
代码如下:
#include <iostream>
class Parent1
{
public:
int p1;
virtual void func()//加virtual关键字声明为虚函数
{
std::cout << "调用了基类Parent1的func()" << std::endl;
}
};
class Parent2
{