How to apply sizeof() operator to non-static class member methods?

前端 未结 4 1030
轮回少年
轮回少年 2021-01-25 11:00
struct MyClass {
  int foo () { return 0; }
};

unsigned int size = sizeof(MyClass::foo);  // obviously error

Can we apply sizeof() to mem

4条回答
  •  遇见更好的自我
    2021-01-25 11:23

    You cannot obtain the size of a member-function, but you can obtain the sizeof a pointer-to-member-function:

    int size = sizeof( &MyClass::foo );
    

    The same goes for non-member functions (and static member functions), the size of the function cannot be obtained. It might be misleading because in most contexts, the name of the function decays automatically into a pointer to the function basically in the same way that an array decays to a pointer to the first element, but as in the case of arrays, sizeof does not trigger the decay and that in turn means that you have to ask for the pointer explicitly.

提交回复
热议问题