#include"iostream"
using namespace std;
/*
当类中声明虚函数时,编译器会在类中生成一个虚函数表
虚函数表是一个存储类成员函数指针的数据结构
虚函数表是编译器自动生成与维护的
虚函数会被编译器放在虚函数表
存在虚函数时,每个对象中都有一个指向虚函数表的指针VPTR指针
编译器做了提前布局
虚函数会使类的sizeof大小增加4字节
*/
class Parent01
{
public:
virtual void func() {
cout << "父类的func" << endl;
}
};
class Child01 :public Parent01//1.继承
{
public:
void func() {//2.重写
cout << "子类的func" << endl;
}
};
void objTest(Parent01* p) {//3.父类指针指向子类对象
p->func();
}
int main() {
Child01 c1;//用类定义对象时,会在对象中添加一个VPTR指针(虚函数表指针),把虚函数做成虚函数表,存储多个(对象中的)虚函数入口地址
objTest(&c1);
Parent01 p1;
objTest(&p1);
int len = sizeof(Parent01);//4
len = sizeof(Child01);
system("pause");
return 0;
}