比如:class a{int a; virtual ~a(){}}; class b{int b; virtual ~b(){}}; class c:public a, public b{int c; virtual ~c(){}}.则c的对象地址是a对象的地址,但不是b对象的地址。b对象的地址是c对象的地址加上a对象的偏移(即a对象的大小)。所以对以下语句上述不成立:b *pb = new c;此时pb与new c得到的地址不相等,经过编译器的调整:pb = (byte*)(new c) + sizeof(b);考虑delete pb;