#include <iostream>
using namespace std;
class A{
public:
A(){a = 1; b = 2;}
void fun(){printf("%d\t%d\n",a,b);}
private:
int a,b;
};
class B{
public:
B(){c=3;}
void fun(){
printf("hhh%d\t",c);
}
private:
int c;
};
int main()
{
A a;
B *pb = (B*)(&a);
pb->fun();
return 0;
using namespace std;
class A{
public:
A(){a = 1; b = 2;}
void fun(){printf("%d\t%d\n",a,b);}
private:
int a,b;
};
class B{
public:
B(){c=3;}
void fun(){
printf("hhh%d\t",c);
}
private:
int c;
};
int main()
{
A a;
B *pb = (B*)(&a);
pb->fun();
return 0;
}
输出是hhh1
fun就是一个函数指针 因为是B*调用的它 所以到代码段找到类B的fun函数 this.c取得是pb指向的对象的第一个int成员变量(通过内存偏移取到) 可是这个时候this 指针指向的是A的对象 所以取到的是A的第一个成员变量