C++中vptr指针的存在

来源:互联网 发布:装修网络平台有哪些 编辑:程序博客网 时间:2024/05/23 13:10

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

(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  刚好一个指针的长度。

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

2 0