代码之家  ›  专栏  ›  技术社区  ›  s_b

C++对象如何访问它的成员函数?

c++
  •  2
  • s_b  · 技术社区  · 15 年前

    C++对象如何知道成员函数定义的位置?我很困惑,因为对象本身不包含函数指针。 sizeof 在对象上证明了这一点。 那么,运行时环境如何完成对象到函数的映射呢?类的成员函数指针表在哪里维护?

    4 回复  |  直到 15 年前
        1
  •  10
  •   Oliver Charlesworth    15 年前

    A a;
    a.func();
    

    A a;
    A_func(&a);
    

    vtable

    A *p_a = new B();
    p_a->func();
    

    A *p_a = new B();
    p_a->p_vtbl->func(p_a);
    

    p_vtbl *p_a

        2
  •  1
  •   Timo Geusch    15 年前

    • this

        3
  •  0
  •   Johan Kotlinski    15 年前

        4
  •  0
  •   Steve Townsend    15 年前