sizeof*这个对象

all*_*all 10 c++

码:

#include <cstdio>

class myc {
    int dummy;
public:
    int si(){return sizeof(*this);}
};

class d_myc : public myc {
    int d_dummy;
};

int main() {
    myc a;
    d_myc b;
    printf("%d %d\n%d %d", a.si(), b.si(), sizeof(a), sizeof(b));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

4 4
4 8
Run Code Online (Sandbox Code Playgroud)

我期望 :

4 8
4 8
Run Code Online (Sandbox Code Playgroud)

为什么我的期望错了?

Oli*_*rth 23

sizeof在编译时解决,而不是在运行时解决.所以sizeof(*this)相当于sizeof(myc).

  • 而且,重要的是,它对给定的表达式的静态类型起作用,在本例中是`myc`. (3认同)
  • @osgx:这完全有可能!但我从不调查这些事情,因为它们是非标准的. (2认同)