#include <iostream> using namespace std; class A { public: A():i(1){} int i; }; class B: public A { public: B():j(3){} int j; }; int hack(A* p, int count) { int total=0; for(int i=0; i <count; ++i) { //p++移动一个字节,会得到A的实例,p++移动两个字节,会得到B的实例 int x = p++->i; total+=x; } return (total); } int main() { B b[3]; cout << hack(b,6) << endl; return 0; } 结果为1+3+1+3+1+3 =12 原因在注释中有,就是类对象指针的移动问题,但是更深入的原因我还不大清楚,请各位CSDN上的朋友指点!