C++中vptr指针的存在

时间:2022-09-29 21:56:36

在实现多态的时候三个步骤:

(1)必须有继承

(2)必须有virtual关键字

(3)有父类指针指向子类对象

其实在实现多态的时候,申明为虚函数是,编译器会自动生成一个虚函数表

当存在虚函数时,每个对象都有一个指向虚函数表的指针

下面我来测试一下它的存在:

#include <iostream>
using namespace std;

class A
{
public:
A(int a)
{
this->a = a;
}
virtual void run()
{

}
private:
int a;
};

class B
{
public:
B(int a)
{
this->a= a;
}
void run()
{

}
private:
int a;
};

class C
{
public:
C(int a)
{
this->a = a;
}
virtual void run()
{

}
private:
int a;
};

int main()
{
A a(1);
C c(2);
B b(3);
cout << sizeof(a) << endl;
cout << sizeof(b) << endl;
cout << sizeof(c) << endl;
return 0;
}
通过结果可以看出  打印的是8 4 8  刚好一个指针的长度。

希望大家关注我,哪怕我还是一个菜鸟^*^ 谢谢~