我用sizeof只能看见类中的成员函数,可能还有虚函数表指针。但是我看不见函数保存在哪里,函数也应该占用内存的。请问在哪里?另外,如果多个派生类所共同的基类,那么调用这些派生类的时候,是不是在同一地址寻找这个函数。

解决方案 »

  1.   

    sizeof只能看到类中的数据成员和虚指针,还会按4字节对齐。
    成员函数在内存中只有一份,位置不能确定,你可以用函数名(即指针)来获得这个地址。
    基类的非虚函数只有一个,派生类也是用这一个。
    但如果是虚函数,在派生类中重写了,就是两个不一样的了。
      

  2.   

    1
    我用sizeof只能看见类中的成员函数,可能还有虚函数表指针。
    >>如果有virtual function 的话,当然是有vptr的。
    或者是 虚拟的继承的时候也有 vptr。2
    但是我看不见函数保存在哪里,函数也应该占用内存的。请问在哪里?
    >>在pe文件里,代码通常保存在代码段中。3
    另外,如果多个派生类所共同的基类,那么调用这些派生类的时候,是不是在同一地址寻找这个函数。
    >>代码是一份。
    对象的数据有多份。