深度探索C++对象模型(83-88页):那是被编译器插进去的一个char ,使得这个class的不同实体(object)在内存中配置独一无二的地址。也就是说这个char是用来标识类的不同对象的既然是空类,为何要设置标志去区分?有很多这样的宏#define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0]) 如果对象大小是0 这个宏会发生除0错误。参照:知乎问答