#include <iostream>
using namespace std;
class A {
public:
void print() {
printf("A\n");
}
protected:
private:
int a;
};
class A2 {
public:
virtual void print() {
printf("A\n");
}
protected:
private:
int a;
};
/*
对象中的VPTR指针什么时候被初始化?
对象在创建的时,由编译器对VPTR指针进行初始化
只有当对象的构造完全结束后VPTR的指向才最终确定
父类对象的VPTR指向父类虚函数表
子类对象的VPTR指向子类虚函数表
*/
void main() {
printf("sizeof(A):%d\n", sizeof(A)); // sizeof(A) : 4
printf("sizeof(A2):%d\n", sizeof(A2)); // sizeof(A2) : 8 // 多出的4个字节是vptr指针
system("pause");
}
C++证明vptr指针的存在的demo
最新推荐文章于 2024-06-09 20:18:37 发布