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; 的虚函数表如下

  • 相关阅读:
    053-649
    053-648
    053-647
    053-646
    053-645
    053-644
    053-643
    053-642
    053-641
    053-640
  • 原文地址:https://www.cnblogs.com/yannuonuo/p/2996302.html
Copyright © 2011-2022 走看看