zoukankan      html  css  js  c++  java
  • 虚函数表

    假设有类:

    class Base {

         public:

                virtual void f() { cout << "Base::f" << endl; }

                virtual void g() { cout << "Base::g" << endl; }

                virtual void h() { cout << "Base::h" << endl; }

    };

     则:

                Base b;

                cout << "虚函数表地址:" << (int*)(&b) << endl;

                cout << "虚函数表 — 第一个函数地址:" << (int*)*(int*)(&b) << endl;

    实际运行经果如下:

    虚函数表地址:0012FED4

    虚函数表 — 第一个函数地址:0044F148

                 ((int*)*(int*)(&b)+0);  // Base::f()函数的地址

              ((int*)*(int*)(&b)+1);  // Base::g()函数的地址

              ((int*)*(int*)(&b)+2);  // Base::h()函数的地址

    图解:

    继承:

    Derive d; 的虚函数表如下

  • 相关阅读:
    类间关系总结
    Android数据持久化技术
    广播
    活动
    Clean Code
    理解async特性
    async和await构成的异步方法
    ubuntu开启ssh服务
    lumen可以使用laravel-ide-helper
    laravel excel迁移到lumen
  • 原文地址:https://www.cnblogs.com/yannuonuo/p/2996302.html
Copyright © 2011-2022 走看看